访问同一类中方法外的任何位置

时间:2015-02-01 10:58:35

标签: java android integer static-variables

我在旁边int jj函数中声明了onConfigurationChanged现在我想在同一个班级的任何地方的onConfigurationChanged之外访问它。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        final int jj=4;
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
        final int jj=2;   
    }
}

我想在同一个类中访问此变量,如下所示:

public class MainActivity extends Activity {
    public static int aa=jj;
}

2 个答案:

答案 0 :(得分:2)

将其声明为类字段。我不知道你在aa做了什么。

public class MainActivity extends Activity {

public int jj;

@Override
public void onConfigurationChanged(Configuration newConfig) {

    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();

        jj=4;

    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();

        jj=2;

    }
}

}

从问题中可以清楚地看出,您并不真正了解编程,OOP和Java的基础知识。

我建议您在继续操作之前完成一些基本教程,直到您理解基元与对象finalstatic

你也应该理解你不能像POJO那样对待Activity

答案 1 :(得分:0)

好吧,你可以创建一个类来保存全局变量:

public class GlobalVariables {
     public static int jj = 0;
}

然后,您只需拨打GlobalVariables.jj

即可从任何地方访问它

e.g。

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        GlobalVariables.jj=4;
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        GlobalVariables.jj=2;
    }

    public static int aa= 0;
    ...
    aa = GlobalVariables.jj;

但是,我非常同意西蒙的观点。你需要学习面向对象设计的基础知识,因为你提出的要求打破了一些OOD原则,我建议的解决方案肯定是一种过度杀伤。