0

我是 android java 编程的新手。我正在向对话框添加自定义动态布局。我有 2 个类,Mainactivity.java 和 Getval.java Mainactivity.java 创建一个对话框,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"};

公共无效 setval(){

TableLayout tl = (TableLayout) findViewById(R.id.tly);

按钮 b=新按钮(此);

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

} }

4

1 回答 1

0

在没有看到您的 xml 或完整代码(或抛出的异常)的情况下查看此内容,我很愿意猜测您正在尝试从它所在的活动之外的活动中膨胀/修改视图(R.id.tly)最初是从 (MainActivity) 膨胀的。

一般来说,如果不使用跨活动处理程序或其他方法进行一些技巧,您将无法做到这一点。也许更改您的代码以膨胀 MainActivity 中的视图(R.id.tly)(如果它在 R.layout.attributewin 内部,则在您的对话框中),在 Getval 中进行处理,将它们返回给 MainActivity,以便它可以填充视图.

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

于 2012-12-01T00:24:40.380 回答