Android 访问其他活动';s文本视图,用于在不同活动中追加文本
首先,感谢您阅读并花时间解决此问题。 我有一些功能,每个功能都包含一个按钮,用于转到下一个。最后一个包含一个TextView,我想Android 访问其他活动';s文本视图,用于在不同活动中追加文本,android,Android,首先,感谢您阅读并花时间解决此问题。 我有一些功能,每个功能都包含一个按钮,用于转到下一个。最后一个包含一个TextView,我想append()每个活动都已完成其工作的文本。我使用static访问TextView,但是因为包含TextView的活动是最后一个运行的活动,所以我得到了NullException。 我将感谢你的建议。 谢谢;) 最后一项活动: public class FinishActivity extends Activity { static TextView te
append()
每个活动都已完成其工作的文本。我使用static访问TextView,但是因为包含TextView的活动是最后一个运行的活动,所以我得到了NullException。
我将感谢你的建议。
谢谢;)
最后一项活动:
public class FinishActivity extends Activity {
static TextView textViewResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.finish_layout);
textViewResult = (TextView)findViewById(R.id.textViewResult);
}
}
你可以把你的文本放在你用来开始你的活动的意图中
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String strName = "abc";
i.putExtra("STRING_I_NEED", strName);
然后在下一个活动中,您可以通过
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("STRING_I_NEED");
}
可以使用intent.putExtra()方法,如
Intent intent = new Intent(this, your_next_activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("src", textViewResult.getText().toString() );
startActivity(intent);
然后在oncreate()方法的下一个活动中,使用下面的方法检索
Intent i = getIntent();
String s = i.getExtras().getString("src");
如图所示,使用SharedReferences在每个活动后保存附加的字符串,并在最后一个活动中使用它作为
textview.setText(pref.getString(“key”,null))代码>
如果您不了解如何创建/使用SharedReferences,请留言,我很乐意提供帮助
更新:
在每项活动中都要申报-
SharedPreferences pref;
SharedPreferences.Editor editor;
然后在onCreate()中-
您可以使用任何字符串来代替上面的“name”。它是您的SharedReference文件的名称
现在保存字符串-
editor.putString("myString", "some string");
editor.apply();
获取字符串-
String s=pref.getString("MyString",null);
只需在第二个活动中获取字符串->使用“+”追加->使用editor.put再次保存。这应该可以做到:)google SharedReferences更多信息在您的情况下,最简单的方法是:使用应用程序
:
//create class App that extends android.app.Application
public class App extends Application {
public String yourTextToShow = "";
@Override
public void onCreate() {
super.onCreate();
}
}
修改AndroidManifest.xml的
标记,使其具有android:name=“your.package.name.App”属性
从那时起,无论何时,只要您想从任何活动更改/访问您的文本,只需调用:((App)getApplication()).yourTextToShow=“textyouwant”代码>。在您的情况下,您需要在活动的onResume
中重置TextView
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String strName = "abc";
i.putExtra("STRING_I_NEED", strName);
注意:不要尝试使用静态TextView
。这是最糟糕的做法。它会给应用程序造成内存泄漏。嗨,谢谢您的解决方案,是的,我知道如何按意向发送额外内容,但我的意图用于运行下一个活动,而我要附加的文本是在最后运行的最后一个活动中。您指打开应用时,要附加的文本位于第一个活动中。在这种情况下,可以使用startActivityForResult。检查开发人员站点-使用应用程序是一个不错的选择:)我听说了这样的事情。你能简单描述一下它是如何工作的吗?:)嗯,我不知道,我认真地听着:)不过我有个问题。当我多次调用同一个活动(出于某些长话短说的原因)时,它只保存最后一个!如果您先保存“string1”,然后下次保存getString(“MyString”)+“string2”,依此类推。“+”操作符用于附加字符串。这解决了您的问题吗?我使用了editor.putString(“myStr”,pref.getString(“myStr”,null)+“\n”+“some str”)代码>,似乎有一些问题,但它的工作!谢谢你,伙计。我希望你不要谢我。这是你应得的:)谢谢你的好意。