我是android java编程的新手。我正在为对话框添加自定义动态布局。我有2个类,Mainactivity.java和Getval.java Mainactivity.java创建一个dialoge,Getval在运行时生成动态布局。 每件事情都很好但是当它试图调用Getval.java的方法时,它会给出异常。这是两个类的代码。 g.setval();在Mainactivity.java中导致问题。
:::::Mainactivity.java:::::
公共类MainActivity扩展了Activity {
private Button button;
public Getval g=new Getval();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (Button) findViewById(R.id.buttonShowCustomDialog);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//set up dialog
g.setval();
Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.attributewin);
dialog.setTitle("Attribute Window");
dialog.setCancelable(true);
dialog.show();
}
});
::::Getval::::
公共类Getval扩展了Activity {
String names[]={"test","chaeck","kajsdhasj","dlasdig"};
String values[]={"test","chaeck","kajsdhasj","dlasdig"};
String test[]={"Attribut","Value"};
public void setval(){
TableLayout tl = (TableLayout) findViewById(R.id.tly);
按钮b =新按钮(this);
for (int i = 0; i < names.length; i++) {
//Row
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
//TextViews
TextView tv0 = new TextView(this);
tv0.setText(names[i]);
tv0.setMaxWidth(75);
TextView tv1 = new TextView(this);
tv1.setText(values[i]);
tv1.setMaxWidth(150);
View line = new View(this);
line.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 1));
line.setBackgroundColor(Color.BLACK);
//Setting Views
tr.addView(tv0);
tr.addView(tv1);
tl.addView(tr);
tl.addView(line);
}
//Button Row
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
tr.setGravity(0x11);
b.setId(100);
b.setText("Return");
b.setGravity(0x11);
tr.addView(b);
tl.addView(tr);
} }
答案 0 :(得分:0)
在没有看到你的xml或完整代码(或抛出的异常)的情况下查看这个,我愿意猜测你是试图从一个以外的活动中扩展/修改一个视图(R.id.tly)最初膨胀的地方(MainActivity)。
一般来说,如果不使用交叉活动处理程序或其他方法做一些技巧,就不能这样做。也许更改你的代码以在MainActivity中扩展视图(R.id.tly)(如果它在R.layout.attributewin中,则在对话框中),在Getval中进行处理,将它们返回给MainActivity,以便它可以填充视图
但同样,这只是猜测,因为我没有看到你的xml或异常。