-1

メインクラスには、別のクラスにアクセスする2つの変数があります。

public class MyClassA extends Activity {
int i = 1;
Button b1; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.i = 31;
        this.b1 = (Button) findViewById(R.id.btn1);
        ~~
    }
 }

2番目のクラスはmainClassオブジェクトの変数を呼び出したい:

public class MyclassB implements OnClickListener{
     MyClassA mainClass = new MyClassA();
     Button btn = mainClass.b1;
     int n = mainClass.i;
     public void OnClick(View arg0){
         Log.v("btn:",btn);
         Log.v("int:",n);
     }

     //btn returns null;
     //int returns 1;

しかし、onCreateメソッドは変数を設定しません。

のようなメインクラス変数を設定してみませんthis.i=31か?

4

2 に答える 2

2

単純なクラスのようにアクティビティをインスタンス化するだけでは実行されないためonCreate()i値はとして残ります1Intentandを使用すると、onCreate()が呼び出されますActivity

コメントしたように、内部クラス(または)匿名クラスのいずれかを使用する必要がある場合があります。詳細については、このドキュメントをお読みください。

于 2012-10-14T15:25:39.920 に答える
1

-内部クラスを使用します。

public class MyClassA extends Activity {
int i = 1;
Button b1; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.i = 31;
        this.b1 = (Button) findViewById(R.id.btn1);
        ~~
    }


   class MyclassB implements OnClickListener{

// You can directly access the members of the Outer class from the Inner Class

     Button btn = b1;     
     int n = i;

     public void OnClick(View arg0){
         Log.v("btn:",btn);
         Log.v("int:",n);
     }

 }

}
于 2012-10-14T15:33:51.967 に答える