Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在其他视图中更改文本视图_Java_Android_Textview_Android View - Fatal编程技术网

Java 在其他视图中更改文本视图

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的情况下

我试图在切换到该视图之前,通过更新文本视图中的文本来准备一个视图

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

 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很高兴看到这一点。在功能中,请明确您的问题。这样用户就可以理解它,并提出好的解决方案。