Java 在其他视图中更改文本视图
我试图在切换到该视图之前,通过更新文本视图中的文本来准备一个视图 我已经将textview变量声明为public,并在OnCreate中对其进行了初始化Java 在其他视图中更改文本视图,java,android,textview,android-view,Java,Android,Textview,Android View,我试图在切换到该视图之前,通过更新文本视图中的文本来准备一个视图 我已经将textview变量声明为public,并在OnCreate中对其进行了初始化 Info = (TextView) findViewById(R.id.BackDialogText); 当需要更改文本时,我得到一个nullpointerException Info.setText(TheString); setContentView(R.layout.mydialog_layout); 我在没有setText的情况下
Info = (TextView) findViewById(R.id.BackDialogText);
当需要更改文本时,我得到一个nullpointerException
Info.setText(TheString);
setContentView(R.layout.mydialog_layout);
我在没有setText的情况下运行了这个应用程序,它运行得很好,用预定义的文本显示了我的视图。更新视图的文本是否缺少一些技巧?findviewbyd()在调用它的视图中查找视图
编辑:很抱歉,我的Mac电脑崩溃了,我无法进一步扩展。基本上,在安卓系统中,任何一点上都只有前台活动。因此,即使从另一个活动中修改一个视图也不是一个好主意。如果只是要修改的文本,那么有两个选项,最简单的方法是在其中一个活动中使用公共静态变量,并使用该变量调用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");
只需交换线路位置 下面是工作片段
setContentView(R.layout.mydialog_layout);
Info.setText(TheString);
基本上在设置视图之前
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
所以我需要从我稍后打电话的视图中找到它?例如
mydialog\u layout.findviewbyd(R.id.BackDialogText)
?文本视图“Info”是否属于某个对话框?然后需要使用'Info=(TextView)myDialog.findViewById(R.id.BackDialogText);'它属于mydialog\u布局。所以在这种情况下:mydialog\u layout.findviewbyd(R.id.BackDialogText)
Ok。然后读@Vipul Shah的答案。没错。它会起作用的。使用setContentView(R.layout.mydialog\u布局);Info=(TextView)findViewById(R.id.BackDialogText);Info.setText(字符串);他说他想从另一个视图修改一个视图。这是正确的,我只需要在更改视图后定义TextView。代码是这样的:setContentView(R.layout.mydialog\u layout);Info=(TextView)findViewById(R.id.BackDialogText);Info.setText(字符串)
@AtlasOnEarth很高兴看到这一点。在功能中,请明确您的问题。这样用户就可以理解它,并提出好的解决方案。