0

私はAndroid Javaプログラミングが初めてです。ダイアログ ボックスにカスタム動的レイアウトを追加しています。Mainactivity.java と Getval.java の 2 つのクラスがあります Mainactivity.java はダイアログを作成し、Getval は実行時に動的レイアウトを生成します。すべてがうまく機能しますが、Getval.java のメソッドを呼び出そうとすると、例外が発生します。これが両方のクラスのコードです。g.setval(); Mainactivity.java で問題が発生します。

                              :::::Mainactivity.java:::::

public class MainActivity extends 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::::

public class Getval extends 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=新しいボタン(これ);

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.layout.attributewin 内にある場合はダイアログ) でビュー (R.id.tly) を拡張するようにコードを変更し、Getval で処理を行い、それらを MainActivity に戻して、ビューにデータを入力できるようにします。 .

ただし、xml または例外が表示されないため、これは推測にすぎません。

于 2012-12-01T00:24:40.380 に答える