Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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
Android Can';t从主活动(带接口)更改片段中的文本视图,_Android_Interface_Nullpointerexception_Textview_Fragment - Fatal编程技术网

Android Can';t从主活动(带接口)更改片段中的文本视图,

Android Can';t从主活动(带接口)更改片段中的文本视图,,android,interface,nullpointerexception,textview,fragment,Android,Interface,Nullpointerexception,Textview,Fragment,虽然我读过类似的帖子问题,但我还没有找到解决问题的方法。正如您在标题中看到的,我无法更改TextFragment中的Textview。 我收到这个错误:07-09 15:05:55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRuntime:FATAL EXCEPTION:main 07-09 15:05:55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRunti

虽然我读过类似的帖子问题,但我还没有找到解决问题的方法。正如您在标题中看到的,我无法更改TextFragment中的Textview。 我收到这个错误:07-09 15:05:55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRuntime:FATAL EXCEPTION:main 07-09 15:05:55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRuntime:java.lang.NullPointerException
07-09 15:05:55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRuntime:com.eguide.dimitris.campusguide.mainActivity$1.onVisitStart(mainActivity.java:66)

所以我非常感谢你的帮助。 提前谢谢

主要活动

文本片段

图像片段

接口

伙计们也注意到我已经试过了,但没有改变

inter inte;


public void changestatus(){
    placeEventListener= new PlaceEventListener() {
        @Override
        public void onVisitStart(Visit visit) {
            super.onVisitStart(visit);
            name=visit.getPlace().getName().toString();
            if (name!=null){
                inte.respond(name);
                inte.barstatus2();
            }
        }
    };
编辑: 如果代替

public void changestatus(){
placeEventListener= new PlaceEventListener() {
    @Override
    public void onVisitStart(Visit visit) {
        super.onVisitStart(visit);
        name=visit.getPlace().getName().toString();
        if (name!=null){
            respond(name);
            barstatus2();
        }
    }
使用

我可以改变…你能解释为什么吗?? 我不希望这段代码在start()上运行。
我希望这段代码在一个方法中工作。

您需要在
textFragment
中进行少量更改,将
TextView
onCreateView()
方法中初始化为

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.text_fragment, container,false);

    text1 = (TextView)getActivity().findViewById(R.id.textF);
    text1.setText("Press Start button to find buildings near you");

    return view;
}

您是否尝试过调试代码以更好地了解错误发生的位置?让错误所在的方法或类位于.com.eguide.dimitris.campusguide.mainActivity$1.onVisitStart(mainActivity.java:66),而不是一大块代码,这会很有帮助……好的,因此您可能不需要在问题中包含所有类。请尝试稍微整理一下您的问题,让我们更好地了解问题出在哪里。
textFragment
中的
TextView
应该在
onCreateView()
方法中初始化,而不是
onActivityCreated()
@Daniele我清理了按钮片段…我认为没有必要。。。谢谢你的建议不起作用@Apurva当我执行此操作时,会出现另一个错误:java.lang.RuntimeException:无法启动活动组件信息{com.eguide.dimitris.campusguide/com.eguide.dimitris.campusguide.mainActivity}:android.view.InflateException:二进制XML文件行#35:在主活动-->setContentView(R.layout.main_活动)中,在这行代码中膨胀类片段-->和ti点时出错;我让你的答案起作用了,但它并没有解决我的问题。谢谢。
public interface inter {
public  void respond(String data);

public void barstatus();

public void barstatus2();
}
inter inte;


public void changestatus(){
    placeEventListener= new PlaceEventListener() {
        @Override
        public void onVisitStart(Visit visit) {
            super.onVisitStart(visit);
            name=visit.getPlace().getName().toString();
            if (name!=null){
                inte.respond(name);
                inte.barstatus2();
            }
        }
    };
public void changestatus(){
placeEventListener= new PlaceEventListener() {
    @Override
    public void onVisitStart(Visit visit) {
        super.onVisitStart(visit);
        name=visit.getPlace().getName().toString();
        if (name!=null){
            respond(name);
            barstatus2();
        }
    }
@Override
protected void onStart() {
    super.onStart();
    placeEventListener= new PlaceEventListener() {
        @Override
        public void onVisitStart(Visit visit) {
            super.onVisitStart(visit);
            name=visit.getPlace().getName();
            if (name!=null){
                respond(name);
                barstatus2();
            }
        }
    };
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.text_fragment, container,false);

    text1 = (TextView)getActivity().findViewById(R.id.textF);
    text1.setText("Press Start button to find buildings near you");

    return view;
}