繁体   English   中英

如何在另一个活动中获取变量?

[英]How do I get a variable in another activity?

如何在另一个活动中访问变量值。 在我的示例中,我有一个字符串变量项,其值是微调器选择的值。 如何在不使用 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 {

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

public static String stringName; 

stringName = .. // value from Spinner

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

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

public static String getMyString(){
    return item;
}

然后在您当前的活动中,您可以致电:

String myValue = LoginScreen.getMyString();

尝试这个。

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

     public static Bundle mMyAppsBundle = new Bundle():

第2步:

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

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

第3步:

现在,您可以通过以下方式从任何地方获取这些值:

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

在使用捆绑对象之前应用空检查以获得安全性观点。

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

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

这是您非常想要的东西。

public class FirstActivity extends AppCompatActivity{

      public static int myVariable = 0;  // Your varible that you want access  

       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_first);
          // Your all codes and methods
       }

}

调用变量到您的目标活动

public class SecondActivity extends AppCompatActivity{


       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_second);

          FirstActivity.myVariable = 10;    // Call like this to access the myVarible in this activity 
          
       }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM