使用putExtra方法的Classwide变量?

时间:2015-07-24 10:09:20

标签: java android android-intent android-activity oncreate

我对我的Android应用程序有两个感兴趣的活动: 活动1转到活动2

我希望将一些整数值传递给Activity2。

Activity1是这样的:

    public class Activity1 extends AppCompatActivity {
// some code ...

//handle the click of a button
                    Intent intent1 = new Intent(Activity1.this, Activity2.class);
                    intent1.putExtra("var1", 10);
                    intent1.putExtra("var2", 20);
                    startActivity(intent1);    
}

然后在活动2中,我有这个:

public class Activity2 extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle extras = getIntent().getExtras();
        int var1 = extras.getInt("var1");
        int var2 = extras.getInt("var2");
        int[] myIntArray = new int[var1*var2];

// more code...

}

// more code...

private OnClickListener myButtonListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        helperFunction1();
        return;
    }
};

private void helperFunction1(){
//need to access var1, var2 and myIntArray
}

}

在我拥有var1和var2的类范围变量之前,我的Activity2类中的所有方法都可以访问它们。但是现在,在Activity2中调用onCreate之后,必须声明var1和var2。我觉得有一个非常简单的解决方案,但是如何让var1和var2充当类范围的变量呢?

如果这个问题有点复杂,感谢和抱歉。

2 个答案:

答案 0 :(得分:0)

public class Activity2 extends AppCompatActivity{

private int var1 = 0;
private int var2 = 0; 

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle extras = getIntent().getExtras();
        var1 = extras.getInt("var1");
        var2 = extras.getInt("var2");
        int[] myIntArray = new int[var1*var2];

// more code...
}
private void helperFunction1(){
int sum = var1 + var2;
}
}

答案 1 :(得分:0)

我知道您希望在类的所有方法中看到var1和var2。简单地说,您需要执行以下操作: 1-在onCreate方法之前声明private int。 2-赋值将在oncreate方法内。因此,每当类被称为var1且var2具有来自classA的值时。

所以你的课应该是这样的:

public class Activity2 extends AppCompatActivity{
private int var1 ; 
private int var2 ;

// as well make myIntArray private 
private int[] myIntArray ; 
@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extras = getIntent().getExtras();
    var1 = extras.getInt("var1");
     var2 = extras.getInt("var2");
    myIntArray = new int[var1*var2];



}