我想发送一个字符串变量,该变量输入到ActivityOne上的EditText中以传递数据,并在ActivityThree上显示为TextView。但是,作为执行此操作的唯一解决方案,我遇到问题,我可以找到导致活动在执行此操作时切换到ActivityThree。我想避免这种情况,甚至可能将数据发送到ActivityThree,并在点击按钮时切换到ActivityTwo。任何帮助或重定向到当前的解决方案将不胜感激。
答案 0 :(得分:0)
如果要通过避免ActivityTwo将数据从ActivityOne发送到ActivityThree,然后将该数据保存在静态变量中,则在ActivityThree中使用该变量来设置TextView数据。
答案 1 :(得分:0)
您可以使用SharedPreferences
执行此操作。
在EditText
Preference
中设置ActivityOne
值:
// EditText
EditText editText = (EditText) findViewById(R.id.editText);
SharedPreferences.Editor editor = getSharedPreferences("Your_Preference_Name", MODE_PRIVATE).edit();
editor.putString("KEY_VALUE", editText.getText().toString());
editor.commit();
在ActivityThree
中,从Preference
检索值:
SharedPreferences prefs = getSharedPreferences("Your_Preference_Name", MODE_PRIVATE);
String editTextValue = prefs.getString("KEY_VALUE", null);
// TextView
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(editTextValue);
希望这会有所帮助〜
答案 2 :(得分:0)
请在Application类中使用全局变量,并在ActivityOne中设置它的值,并从ActivityThree中读取相同的值。整个项目活动可以使用全局变量。
答案 3 :(得分:0)
最好的方法是使用输入额外。在活动一中执行此操作
Intent i = new Intent(ActivityOne.this, ActivityThree.class);
i.putExtra("label", "label_text");
startActivity(i);
然后在Activity 3中接收字符串:
EditText input = //intialize it in OnCreate
Intent intent = getIntent();
String data = intent.getExtras().getString("label");
input.setText(data);
答案 4 :(得分:0)
有很多方法可以做到这一点..但这在很大程度上取决于你打算如何处理数据和你的情况。
如果您想要显示活动三中的数据,那么您可以创建数据persist
,然后在活动三创建或恢复时显示该数据,现在:
1-如果您想显示活动三中的数据,并且您希望该值仅在当前会话中保留,则可以使用Global Variable
或甚至静态一,如果您将所需的值定义为活动中的静态变量,则可以轻松访问它并使用它而无需甚至创建活动:
public ActivityThree extends Activity {
public static String myValue;
2-如果您想显示活动三中的数据,并且您希望数据保持,即使应用已关闭,您也可以使用SharedPreferences
,如下所述:
this one
3-如果您想在活动三中运行后台任务,请确定您可以使用LocalBroadcastManager
:
https://developer.android.com/training/basics/data-storage/shared-preferences.html