我无法在onCreate方法中设置主类变量

时间:2012-10-14 15:22:36

标签: java android class

主类有两个想要访问另一个类的变量:

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

第二类想要在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这样的主类变量?

2 个答案:

答案 0 :(得分:2)

当您将活动实例化为简单类时,它将不会执行onCreate(),这就是i值保持为1的原因。使用IntentActivity时会调用onCreate()。

如评论所述,您可能需要使用Inner classes(或)匿名类。阅读此documentation了解更多信息。

答案 1 :(得分: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);
     }

 }

}