[Android][Ajuda] Criar componente em outra Activity

0 respostas
F

Bom, antes de tudo obrigado pela leitura e possível ajuda.

Estou tentando criar um app, que leia de um banco de dados uma lista de componentes (com suas características), e "plote" em várias guias.

Já criei uma classe que eu imaginava que faria o serviço de "plotagem":

public class Componentes {
	private Context context;
	private int proporcaoWidth;
	private int proporcaoHeight;
	private RelativeLayout layout;
	
	
	public Componentes(Context context, RelativeLayout layout, int layoutWidht, int layoutHeight){
		this.context = context;
		this.layout = layout;
		proporcaoWidth = layoutWidht/233;
		proporcaoHeight = layoutHeight/233;		
	}
	
	
	public void plotar(LaudoComponente laudoComponente){
		if(laudoComponente.tipoComp.equals("TRzEdit")){edit(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TLabel")){label(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzCheckBox")){checkBox(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzCheck")){check(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzMemo")){memo(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzDateTimeEdit")){dateTimeEdit(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzNumericEdit")){numericEdit(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzComboBox")){comboBox(laudoComponente);}else{
		if(laudoComponente.tipoComp.equals("TRzSpinEdit")){spinEdit(laudoComponente);}}}}}}}}}			
	}
	
	public void edit(LaudoComponente laudoComponente){		
		EditText TRzEdit = new EditText(context);
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		TRzEdit.setText(laudoComponente.xCaption);
		TRzEdit.setHint(laudoComponente.xHint);
		TRzEdit.setTag(laudoComponente.xDataField);
		plotarRelativeLayout(this.context, TRzEdit, width, height, left, top);
	}
	
	public void dateTimeEdit(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		EditText TRzDateTimeEdit = new EditText(context);
		TRzDateTimeEdit.setText(laudoComponente.xCaption);
		TRzDateTimeEdit.setHint(laudoComponente.xHint);
		TRzDateTimeEdit.setTag(laudoComponente.xDataField);
		TRzDateTimeEdit.setInputType(InputType.TYPE_DATETIME_VARIATION_NORMAL);
	
		plotarRelativeLayout(this.context, TRzDateTimeEdit, width, height, left, top);
		
	}
	
	public void memo(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		EditText TRzEdit = new EditText(context);
		TRzEdit.setText(laudoComponente.xCaption);
		TRzEdit.setHint(laudoComponente.xHint);
		TRzEdit.setTag(laudoComponente.xDataField);
		plotarRelativeLayout(this.context, TRzEdit, width, height, left, top);
	}
	
	public void numericEdit(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		EditText TRzNumericEdit = new EditText(context);
		TRzNumericEdit.setText(laudoComponente.xCaption);
		TRzNumericEdit.setHint(laudoComponente.xHint);
		TRzNumericEdit.setTag(laudoComponente.xDataField);
		TRzNumericEdit.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);		
		plotarRelativeLayout(this.context, TRzNumericEdit, width, height, left, top);
	}
	
	public void spinEdit(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		EditText TRzSpinEdit = new EditText(context);
		TRzSpinEdit.setText(laudoComponente.xCaption);
		TRzSpinEdit.setHint(laudoComponente.xHint);
		TRzSpinEdit.setTag(laudoComponente.xDataField);
		plotarRelativeLayout(this.context, TRzSpinEdit, width, height, left, top);
	}
	
	public void checkBox(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		CheckBox TRzCheck = new CheckBox(context);
		plotarRelativeLayout(this.context, TRzCheck, width, height, left, top);
	}
	
	public void check(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		CheckBox TRzCheck = new CheckBox(context);
		plotarRelativeLayout(this.context, TRzCheck, width, height, left, top);

	}
	
	public void label(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		TextView TLabel = new TextView(context);
		plotarRelativeLayout(this.context, TLabel, width, height, left, top);
		
	}
	
	public void comboBox(LaudoComponente laudoComponente){
		int width = laudoComponente.xWidth * proporcaoWidth ;
		int height = laudoComponente.xHeigth * proporcaoHeight ;
		int left = laudoComponente.xLeft * proporcaoWidth;
		int top = laudoComponente.xTop * proporcaoHeight;
		Spinner TRzComboBox = new Spinner(context);
		plotarRelativeLayout(this.context, TRzComboBox, width, height, left, top);
	}
	
	public String[] itemsToArray(String items,String separador){
		String[] lista = items.split("\\"+separador);
		return lista;
	}
	
	public void plotarRelativeLayout(Context context,final View componente, int width, int height, int left, int top){
		final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width,height);
		params.leftMargin = left * proporcaoWidth   ;
		params.topMargin = top * proporcaoHeight ;	
		layout.addView(componente, params);		

		
	}
	


	

}

Eis o meu problema, não posso (ou não devo) exibir a guia (setContentView), sem antes adicionar os componentes em todas as guais. Então tentei rodar os métodos da classe "Componentes" , no meu Main. Mas não obtive sucesso.

public void onClick(View v) {
				LaudoComponenteDao dao = new LaudoComponenteDao(MainActivity.this);
				Cursor cursor = dao.carregaLaudo("'7E661BC0307155333135'");
				LaudoComponente laudoComponente = new LaudoComponente();
				cursor.moveToFirst();
				while (cursor.moveToNext()){					
					laudoComponente = dao.getComponente(cursor, cursor.getPosition());
					plotar = new Componentes(MainActivity.this, guia1, 500, 500);
					plotar.plotar(laudoComponente);				
				}	
				
				Intent it = new Intent(MainActivity.this,Guia1.class);
				startActivity(it);
				setContentView(R.layout.guia1);

Alguém tem alguma solução para o problema acima?

[size=9][color=#FF0000]10-30 13:07:56.053: E/AndroidRuntime(821): FATAL EXCEPTION: main
10-30 13:07:56.053: E/AndroidRuntime(821): java.lang.NullPointerException
10-30 13:07:56.053: E/AndroidRuntime(821): at adaptadores.Componentes.plotarRelativeLayout(Componentes.java:152)
10-30 13:07:56.053: E/AndroidRuntime(821): at adaptadores.Componentes.label(Componentes.java:130)
10-30 13:07:56.053: E/AndroidRuntime(821): at adaptadores.Componentes.plotar(Componentes.java:31)
10-30 13:07:56.053: E/AndroidRuntime(821): at com.pda.MainActivity$2.onClick(MainActivity.java:92)
10-30 13:07:56.053: E/AndroidRuntime(821): at android.view.View.performClick(View.java:2485)
10-30 13:07:56.053: E/AndroidRuntime(821): at android.view.View$PerformClick.run(View.java:9080)
10-30 13:07:56.053: E/AndroidRuntime(821): at android.os.Handler.handleCallback(Handler.java:587)
10-30 13:07:56.053: E/AndroidRuntime(821): at android.os.Handler.dispatchMessage(Handler.java:92)
10-30 13:07:56.053: E/AndroidRuntime(821): at android.os.Looper.loop(Looper.java:130)
10-30 13:07:56.053: E/AndroidRuntime(821): at android.app.ActivityThread.main(ActivityThread.java:3683)
10-30 13:07:56.053: E/AndroidRuntime(821): at java.lang.reflect.Method.invokeNative(Native Method)
10-30 13:07:56.053: E/AndroidRuntime(821): at java.lang.reflect.Method.invoke(Method.java:507)
10-30 13:07:56.053: E/AndroidRuntime(821): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-30 13:07:56.053: E/AndroidRuntime(821): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-30 13:07:56.053: E/AndroidRuntime(821): at dalvik.system.NativeStart.main(Native Method)[/color][/size]

Criado 30 de outubro de 2012
Respostas 0
Participantes 1