如何在对话框中添加自定义动态布局?

时间:2012-11-30 22:45:26

标签: android-layout

我是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);

} }

1 个答案:

答案 0 :(得分:0)

在没有看到你的xml或完整代码(或抛出的异常)的情况下查看这个,我愿意猜测你是试图从一个以外的活动中扩展/修改一个视图(R.id.tly)最初膨胀的地方(MainActivity)。

一般来说,如果不使用交叉活动处理程序或其他方法做一些技巧,就不能这样做。也许更改你的代码以在MainActivity中扩展视图(R.id.tly)(如果它在R.layout.attributewin中,则在对话框中),在Getval中进行处理,将它们返回给MainActivity,以便它可以填充视图

但同样,这只是猜测,因为我没有看到你的xml或异常。