在不同的视图中更改textview

时间:2012-11-26 06:41:14

标签: java android textview android-view

我正在尝试通过在切换到该视图之前更新textview中的文本来准备要显示的视图。

我已将textview变量声明为public,并在OnCreate中初始化

 Info = (TextView) findViewById(R.id.BackDialogText);

然后在更改文本时,我得到一个nullpointerException

Info.setText(TheString);
setContentView(R.layout.mydialog_layout);

我在没有setText的情况下运行应用程序,它运行正常,向我展示了我的预定义文本视图。是否有一些技巧我缺少更新视图文本?

3 个答案:

答案 0 :(得分:1)

只需交换线位置。

以下是工作代码段。

setContentView(R.layout.mydialog_layout);
Info.setText(TheString);

答案 1 :(得分:1)

基本上在设置视图之前

 setContentView(R.layout.mydialog_layout);

到您的活动中,您无法在代码中使用视图中的元素。所以你的代码中必须有这样的东西

setContentView(R.layout.mydialog_layout);
 Info = (TextView) findViewById(R.id.BackDialogText); // you cannot initialize your view before  setcontentview
 Info.setText(TheString);  //this line must be always called after setContentView

答案 2 :(得分:0)

findViewById()在您正在调用它的视图中查找视图。

编辑:抱歉,我的Mac崩溃了,我无法进一步扩展。基本上,在Android中只有前景Activity活在任何一点。因此,即使从另一个Activity修改一个View也不是一个好主意。如果它只是您要修改的文本,那么您有几个选项,最简单的方法是在其中一个活动中使用公共静态变量,并使用该变量调用setText。

例如:

public class Activity1 extends Activity {
    private static theString = "";

    public static void setString(String s) { 
         theString = s;
     }

    public void onCreate(Bundle b) {
        super.onCreate(b);
      setContentView(R.layout.mydialog_layout);
    Info = (TextView) findViewById(R.id.BackDialogText);



      Info.setText(TheString);
    }
}

然后在Activity2中你可以打电话:

Activity1.setString("New String");