【问题标题】:How do I get a variable in another activity?如何在另一个活动中获取变量?
【发布时间】:2021-06-29 17:25:05
【问题描述】:

如何在另一个活动中访问变量值。在我的示例中,我有一个字符串变量项,其值是微调器选择的值。如何在不使用 Intent 的情况下在另一个活动中访问此变量?

  public class LoginScreen extends Activity {

      Spinner sp;
String item;


      Spinner sp = (Spinner) findViewById(R.id.lgnspinner);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.network_array,
            android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    sp.setAdapter(adapter);

    sp.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            item = (String) parent.getItemAtPosition(position);



        public class AgAppMenu extends Activity {

【问题讨论】:

标签: java android


【解决方案1】:

您可以将它们声明为 静态变量,然后在您的其他类中您可以像 Activity1.stringName 一样访问它们。

public static String stringName; 

stringName = .. // value from Spinner

然后,在所有其他活动中,您可以通过 YourMainActivty.stringName 访问它们。

【讨论】:

  • 如何进入第二个活动?没有得到我在第二个活动中使用的另一个活动 LoginScreen.stringname 是显示错误
  • 不应该。你能附上你正在使用的代码吗?这将帮助我识别您的错误。
【解决方案2】:

如果您不想使用全局变量,您总是可以在您的活动中创建一个方法来返回您的字符串。

public static String getMyString(){
    return item;
}

然后在您当前的活动中,您可以调用:

String myValue = LoginScreen.getMyString();

【讨论】:

  • getMyString() 必须声明为静态,否则永远无法访问它。
  • 这个答案应该被否决,因为它完全错误!没有类实例就不能访问非静态字段!这是面向对象编程的ABCD!!
【解决方案3】:

试试这个。

第一步:在Application类中创建一个静态Bundle对象。(ApplicationClass.java)

     public static Bundle mMyAppsBundle = new Bundle():

第二步:

从任何地方设置该捆绑包中的键值对。 像这样:

   ApplicationClass.mMyAppsBundle.putString("key","value");

第 3 步:

现在您可以像这样从任何地方获取这些值:

   String str = ApplicationClass.mMyAppsBundle.getString("key");

从安全角度考虑,在使用捆绑对象之前应用 null 检查。

【讨论】:

    【解决方案4】:

    使用静态变量可能会导致意外的内存泄漏。您应该为此使用https://developer.android.com/reference/androidx/localbroadcastmanager/content/LocalBroadcastManager。尽管它已被弃用,但您仍然可以使用它。

    如果您遵循最新模式。可以使用https://developer.android.com/reference/androidx/lifecycle/LiveData观察变量的变化。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多