android中的第二个活动可以访问公共静态变量吗?

时间:2011-10-13 14:11:26

标签: android

我在android工作。我的项目有两个活动。我在一个活动中声明了一个公共静态变量,如下所示: -

public static String name="KUNTAL";

在我的第二个活动中,我正在尝试使用此变量,然后生成此名称变量不存在的错误。

如果将变量声明为public,可以在项目的任何位置使用变量吗?

请告诉我我做了什么错误。?

提前谢谢你......

6 个答案:

答案 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");

  }
}