我在android工作。我的项目有两个活动。我在一个活动中声明了一个公共静态变量,如下所示: -
public static String name="KUNTAL";
在我的第二个活动中,我正在尝试使用此变量,然后生成此名称变量不存在的错误。
如果将变量声明为public,可以在项目的任何位置使用变量吗?
请告诉我我做了什么错误。?
提前谢谢你......
答案 0 :(得分:12)
public class Activity1 extends Activity {
public static String name="KUNTAL"; //declare static variable.
@Override
public void onCreate(Bundle savedInstanceState) {
}
}
public class Activity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Activity1.name; //way to access static variable using dot operator.
}
}
答案 1 :(得分:6)
我认为你必须以“静态方式”访问它们,即:
String myVar= name; // wrong
String myVar= TheClassThatContainsName.name; // right
答案 2 :(得分:4)
您可以在任何Activity中使用指定为public static的变量,但您需要使用声明它的Activity名称来访问该变量。
要在第二个活动中访问,只需使用;
Activity1.name ="Me";
表示名称变量属于Activity1,您在Acvity2中使用
答案 3 :(得分:1)
如果你在多个活动中使用相同的变量,那么创建一个类似ActivityConsts {}的类,并在那里声明并初始化这个变量(在ActivityConsts中)。并从具有类名的任何地方访问此变量。 前 -
declare a class-
public class ActivityConsts {
//your String var
public static String name="KUNTAL";
}
现在在您的活动中:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
String yourStringVar = ActivityConsts.name;
}
}
答案 4 :(得分:0)
没有为您的变量指定数据类型。使用
public static String name="KUNTAL";
答案 5 :(得分:0)
声明变量public static
不是在两个活动之间传递值的推荐方法。改为使用Intent
对象:
public class Activity1 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
yourButton.setOnClicklistener(listener);
}
}
//点击某个按钮启动Activity2:
View.onClicklistener listener = new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent mIntent = new Intent(Activity1.this,Activity2.class);
mIntent.putExtra("yourKey","yourValue");
startActivity(mIntent);
}
};
//然后在您的activity2中获取值:
public class Activity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
String yourValue = getIntent().getExtras().getString("yourKey");
}
}