如何在另一个活动中访问变量值。在我的例子中,我有一个字符串变量项,其值是微调器选择的值。如何在不使用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 {
答案 0 :(得分:19)
您可以将它们声明为静态变量,然后在其他类中,您可以像 Activity1.stringName 一样访问它们。
public static String stringName;
stringName = .. // value from Spinner
然后,在所有其他活动中,您可以 YourMainActivty.stringName
访问它们。
答案 1 :(得分:3)
如果你不想使用全局变量,你总是可以在活动中创建一个方法来返回你的字符串。
public static String getMyString(){
return item;
}
然后在您当前的活动中,您可以致电:
String myValue = LoginScreen.getMyString();
答案 2 :(得分:2)
试试这个。
步骤1:在Application类中创建一个静态Bundle对象。(ApplicationClass.java)
public static Bundle mMyAppsBundle = new Bundle():
第2步:
从任何地方设置该捆绑中的键值对。 像这样:
ApplicationClass.mMyAppsBundle.putString("key","value");
第3步:
现在您可以通过以下方式从任何地方获取这些值:
String str = ApplicationClass.mMyAppsBundle.getString("key");
在使用捆绑包对象作为安全观点之前应用空检查。
答案 3 :(得分:0)
使用静态变量会导致意外的内存泄漏。为此,您应该使用 https://developer.android.com/reference/androidx/localbroadcastmanager/content/LocalBroadcastManager。虽然它显示已弃用,但您仍然可以使用它。
如果您遵循最新的模式。您可以使用 https://developer.android.com/reference/androidx/lifecycle/LiveData 来观察变量的变化。