[Android][Ajuda] Criar componente em outra Activity

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”:

[code]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);		

	
}

}[/code]

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.

[code]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);[/code]

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]