10

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

4 回答 4

27

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

public static String stringName; 

stringName = .. // value from Spinner

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

于 2012-09-05T20:22:07.630 回答
7

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

public static String getMyString(){
    return item;
}

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

String myValue = LoginScreen.getMyString();
于 2012-09-05T20:14:08.920 回答
3

Try this.

Step 1: Create a static Bundle object in Application class.( ApplicationClass.java)

     public static Bundle mMyAppsBundle = new Bundle():

Step 2:

Set key values pair in that bundle from anywhere. like this:

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

Step 3:

Now you can get these values from anywhere like this way:

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

Apply null check before using bundle objects for safety points of view.

于 2015-02-23T05:49:03.837 回答
0

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

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

于 2021-06-29T09:25:05.847 回答