0

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

我已将 textview 变量声明为 public,在 OnCreate 中对其进行了初始化

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

然后当需要更改文本时,我得到一个 nullpointerException

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

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

4

3 回答 3

1

只需交换线路位置。

下面是工作片段。

setContentView(R.layout.mydialog_layout);
Info.setText(TheString);
于 2012-11-26T06:52:36.537 回答
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
于 2012-11-26T06:58:53.757 回答
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");
于 2012-11-26T06:43:47.867 回答