在片段中获取NullPointerException错误

幸运石

以下代码引发NullPointerException错误。我不知道为什么。你能检查一下吗?enter code here

我在一项主要活动中有2个片段,如下所示。

  1. RSSFeed活动enter code here
  2. MyListFragment(包含一个按钮)
  3. DetailFragment(包含textview)

/ *********************这里的活动代码******************* /

package com.example.oksijen02.unit2.multipanelFragment;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.example.oksijen02.intent.R;

public class RSSFeedActivity extends Activity implements MyListFragment.OnItemSelectedListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.u2_fragment_activity_main);
    }
    @Override    public void onRSSItemSelected(String link) {        Log.d("butona tiklandi", "onRSSItemSelected: ");
        DetailFragment fragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.detailFragment);
        fragment.setText(link);
    }
}

/ ******************* MyListFragment ************************ /

package com.example.oksijen02.unit2.multipanelFragment;

import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.example.oksijen02.intent.R;
public class MyListFragment extends Fragment {
    private OnItemSelectedListener listener;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.u2_fragment_rsslist_overview,container,false);
        Button detailButton = (Button) view.findViewById(R.id.detailButton);

        detailButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                updateDetail("fake");
            }
        });

        return view;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.d("in on attach", "onAttach");
        if(context instanceof OnItemSelectedListener){
            Log.d("context is not of ", "onAttach:");
            listener = (OnItemSelectedListener) context;
        }else{
            throw new ClassCastException(context.toString()+" must implement MyListFragment.OnItemSelectedListener");
        }
    }

    public interface OnItemSelectedListener{
        public void onRSSItemSelected(String link);
    }

    public void updateDetail(String fake) {
        Log.d("tikladi update", "updateDetail");
        String newTime = String.valueOf(System.currentTimeMillis());
        Log.d("newtime"+newTime, "updateDetail");

        Log.d("listener"+listener.toString(), "updateDetail");
        listener.onRSSItemSelected(newTime);
    }

}

/ *********************** DetailFragment代码************************ ****** /

package com.example.oksijen02.unit2.multipanelFragment;

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.oksijen02.intent.R;

public class DetailFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.u2_fragment_rss_item_detail, container,false);
        return view;
    }

    public void setText(String url) {
        TextView textview = (TextView) getView().findViewById(R.id.detailsText);
        textview.setText(url);
    }
}

错误如下:

 PID: 15763 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference at com.example.oksijen02.unit2.multipanelFragment.MyListFragment.updateDetail(MyListFragment.java:59) at com.example.oksijen02.unit2.multipanelFragment.MyListFragment$1.onClick(MyListFragment.java:30) at android.view.View.performClick(View.java:5181) at android.view.View$PerformClick.run(View.java:20887) at 
幸运石

当我在网站上搜索时,我找到了为什么onAttach方法没有调用的答案。请从这个问题中找到答案

所以我在MyListFragment代码中添加了以下代码:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    if(activity instanceof OnItemSelectedListener){
        Log.d("context is not of ", "onAttach:");
        listener = (OnItemSelectedListener) activity;
    }else{
        throw new ClassCastException(activity.toString()+" must implement MyListFragment.OnItemSelectedListener");
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android片段中获取Java.Lang.NullPointerException

来自分类Dev

片段中OnClickListener的NullPointerException

来自分类Dev

片段中的setListAdaptor错误

来自分类Dev

片段中的getDefaultSharedPreferences上的NullPointerException

来自分类Dev

Grails中的NullPointerException错误

来自分类Dev

Android开发中的片段错误

来自分类Dev

片段中的Android Snackbar NullPointerException

来自分类Dev

NullPointerException:在片段类中调用setAdapter

来自分类Dev

片段onAttach中的NullPointerException for findViewById

来自分类Dev

在PreferencesFragment中获取片段实例

来自分类Dev

在片段中获取TabLayout视图将返回NullPointerException

来自分类Dev

从片段中获取资源

来自分类Dev

NullPointerException-替换FrameLayout中的片段

来自分类Dev

片段中的setListAdaptor错误

来自分类Dev

片段内的webview中的NullpointerException

来自分类Dev

如何从片段中获取视图?

来自分类Dev

aFileChooser错误,获取文件路径在片段中显示错误

来自分类Dev

从片段获取上下文-NullPointerException?

来自分类Dev

在Android中获取当前片段

来自分类Dev

获取片段中的语言环境

来自分类Dev

片段类中的致命错误

来自分类Dev

NullPointerException onClick用于Android片段中的按钮

来自分类Dev

在片段中设置错误TextInputLayout

来自分类Dev

无法在片段中获取MainActivityContext

来自分类Dev

从片段错误中打开片段

来自分类Dev

在片段中设置onClickListener时发生NullPointerException

来自分类Dev

Android 从片段中获取 tabLayout

来自分类Dev

片段中的轮播错误

来自分类Dev

来自片段中`getWritableDatabase` 的 NullPointerException