Jump to content

[Resolvido] nova Activity sem XML não funciona em Java


Filipe_Moraes
 Share

Recommended Posts

Olá pessoal.

Estou com um problema no qual não consigo resolver.

O que eu fiz foi uma aplicação para guardas notas ( eu sei que já existem milhares, só que quero aprender a fazer e essa parece bem fácil )

Segue o que estou fazendo:

1) Eu fiz o seguinte, tem um botão inserir e um campo para informar a nota.

2) Ao clicar em inserir, o programa grava o texto na base de dados e adiciona na activity uma linearlayout com o texto que foi gravado.

3) Estou adicionando essa linearlayout através de código e não através do XML (alias, toda a aplicação não tem XML para criar a interface com o utilizador). Ao adiciona-la estou atribuindo um ID a essa linearlayout, que nada mais é o ID da nota na base de dados que foi retornado ao gravar o texto.

4) Atribui a essa linearlayout o evento "setOnClickListener", porque ao clica-la irá abrir uma nova activity que contém mais informações sobre a nota.

5) Ao clicar na linearlayout é gerado uma nova activity ( quem também é sem XML, gerei via código ) que contém toda a informação necessária.

Aqui está o problema, ao clicar na linearlayout, a nova activity aparece mais sem nada, toda preta.

Segue o códigos.

Essa é a função que é chamada ao clicar na linearlayout:

private OnClickListener fMaisInfo = new OnClickListener() {
	public void onClick(View v) {
		//Iniciando a nova activity
		Intent xInt = new Intent(NotasSemXmlActivity.this, MaisInfoActivity.class);
		xInt.putExtra("ID", Integer.toString(v.getId()));
		NotasSemXmlActivity.this.startActivity(xInt);
	}
};

Essa é a nova activity:

package br.com.NotasSemXml;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TextView;

public class MaisInfoActivity extends Activity {

@Override
	public void onCreate(Bundle savedInstanceState) {

	super.onCreate(savedInstanceState);

		//Criamos um TableLayout
		final TableLayout infoPanel = new TableLayout(this);
		infoPanel.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

		final TextView textView = new TextView(this);
		textView.setText("APENAS PARA TESTE");
		textView.setBackgroundColor(Color.YELLOW);
		textView.setTextSize(15,5);
		infoPanel.addView(textView);

		Button infoButton = new Button(this);
		infoButton.setText("Fechar");
		infoButton.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				finish();
			}
		});
		infoPanel.addView(infoButton);
}
}

Porque a nova activity aparece toda preta e sem os elementos que foram gerados via código?

Obrigado pela vossa atenção pessoal e pela vossa ajuda.

Edited by Filipe_Moraes
Link to comment
Share on other sites

Pessoal, consegui resolver ao final de um dia e meio pesquisando e testando.

Descobri umas 50 maneiras de como não se faz, kkkk! 😄

Mas ao fim, consegui, para aqueles que estão a criar a sua aplicação sem XML, alterei o meu segundo código (que postei no primeiro post), que ficou da seguinte maneira:

package br.com.NotasSemXml;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ScrollView;
//import android.widget.TableLayout;
import android.widget.TextView;

public class MaisInfoActivity extends Activity {

   @Override
       public void onCreate(Bundle savedInstanceState) {

       Intent pId = getIntent();
       super.onCreate(savedInstanceState);
       ScrollView sv = new ScrollView(this);

       final LinearLayout infoPanel = new LinearLayout(this);
               infoPanel.setOrientation(LinearLayout.VERTICAL);
               infoPanel.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
               sv.addView(infoPanel);

              final TextView textView = new TextView(this);
          textView.setText("MAIS INFORMAÇÕES SOBRE: "+pId.getStringExtra("ID"));
          textView.setBackgroundColor(Color.YELLOW);
          textView.setTextSize(15,5);
          infoPanel.addView(textView);

          Button infoButton = new Button(this);
          infoButton.setText("Fechar");
          infoButton.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
               finish();
              }
          });
          infoPanel.addView(infoButton);

             this.setContentView(sv);
   }
}

Bom, fica a dica para quem se encontrar com o mesmo problema.

Obrigado.

  • Vote 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.