访问另一个活动的textView,用于在不同的活动中附加文本

时间:2016-03-18 09:31:34

标签: android

首先感谢阅读和花时间解决这个问题。 我有一些Acivities,每个都包含一个按钮,可以进入下一个。最后一个包含一个TextView,我希望append()每个活动完成其工作的文本。我使用静态来访问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);

    }
}

4 个答案:

答案 0 :(得分:1)

使用显示here的SharedPreferences在每个活动后保存附加的字符串,并将其用作最后一个textview.setText(pref.getString("key",null));

如果您不明白如何创建/使用SharedPreferences,请发表评论并感到很乐意提供帮助

更新: 在每个活动中声明 -

SharedPreferences pref;
SharedPreferences.Editor editor;

然后在onCreate() -

里面
pref = getSharedPreferences("name", MODE_PRIVATE);
editor = pref.edit();

您可以使用上面的任何字符串而不是“名称”。它是您的SharedPreference文件的名称。

现在保存字符串 -

editor.putString("myString", "some string");
editor.apply();

获取字符串 -

String s=pref.getString("MyString",null);

从第二个活动开始的getString - >使用'+'追加 - >使用editor.put再次保存它。应该这样做:) google SharedPreferences获取更多信息

答案 1 :(得分:0)

您可以将文字放在用于开始活动的意图中。

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");
}

答案 2 :(得分:0)

您可以使用像

这样的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");

答案 3 :(得分:0)

在您的情况下,最简单的方法是:使用bin/hadoop jar $HADOOP_HOME/Hadoop-WordCount/wordcount.jar WordCount input output

Application

修改AndroidManifest.xml的//create class App that extends android.app.Application public class App extends Application { public String yourTextToShow = ""; @Override public void onCreate() { super.onCreate(); } } 标记,使其具有属性android:name =" your.package.name.App"。

从那时起,只要您想要从任何<application>更改/访问您的文字,只需致电:Activity。在您的情况下,您需要重置活动((App)getApplication()).yourTextToShow = "textyouwant";中的TextView

P / s:不要尝试使用静态onResume。这是最糟糕的做法。它会为你的应用程序造成内存泄漏。