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

第二类想要调用 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(),这就是为什么ivalue 保持为1. onCreate() 将在您使用Intentand时被调用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 回答