Android 我的视图给了我一个空指针异常

Android 我的视图给了我一个空指针异常,android,nullpointerexception,Android,Nullpointerexception,在我的应用程序中,我从服务器获取一些数据。它们显示得很好,但当我在我的详细片段中传递它们时,所有视图都为空:( 这是我的代码 public class MainActivityFragment extends Fragment { public static final String TAG = "AelApp"; public static ArrayList<MyModel> listItemsList; RecyclerView myList; public

在我的应用程序中,我从服务器获取一些数据。它们显示得很好,但当我在我的详细片段中传递它们时,所有视图都为空:(

这是我的代码

  public class MainActivityFragment extends Fragment {
  public static final String TAG = "AelApp";
  public static ArrayList<MyModel> listItemsList;
  RecyclerView myList;
  public static MatchReportsAdapter adapter;

public MainActivityFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    updateMatchReport();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    getActivity().setTitle("Match Report");

    View rootView = inflater.inflate(R.layout.fragment_main_activity, container, false);
    listItemsList = new ArrayList<>();

    myList = (RecyclerView)rootView.findViewById(R.id.listview_match_reports);
    final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    myList.setHasFixedSize(true);
    myList.setLayoutManager(linearLayoutManager);
    adapter = new MatchReportsAdapter(getActivity(), listItemsList);
    myList.setAdapter(adapter);

    return rootView;
}

public void updateMatchReport(){
    Intent i = new Intent(getActivity(), MatchReport.class);
    getActivity().startService(i);
}

}
详细活动片段

public class DetailedActivityFragment extends Fragment {
TextView articleTextView;
String image;
String article;
ImageView imageView;

public DetailedActivityFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_detailed_activity, container, false);

    articleTextView = (TextView)getActivity().findViewById(R.id.articleTextView);

    imageView = (ImageView)getActivity().findViewById(R.id.imageNews);

    Intent i = getActivity().getIntent();

    article = i.getStringExtra("articleKey");
    image = i.getStringExtra("imageKey");

    Picasso.with(getActivity()).load(image).into(imageView);

    articleTextView.setText(article);


    return v;
 }

}
我的所有数据都是在单击一行之后传递的。我在调试下面几行时知道这一点

    article = i.getStringExtra("articleKey");
    image = i.getStringExtra("imageKey");
请注意,这两个字符串变量都不是null。但是,我的详细片段的两个视图(TextView、ImageView)都是null

也许我的xml文件有问题,但我看不到

活动\u main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/match_reports"
tools:context="theo.testing.androidservices.fragments.MainActivityFragment">

</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/detailed_match_reports"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="theo.testing.androidservices.activities.DetailedActivity"
tools:ignore="MergeRootFrame">
</FrameLayout>

主要活动片段

public class DetailedActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detailed);

    if(savedInstanceState == null){
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.detailed_match_reports,new DetailedActivityFragment())
                .commit();
    }
   }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recLayout"
tools:context=".activities.MainActivity"
android:background="#fff">

<android.support.v7.widget.RecyclerView

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/listview_match_reports"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    />

 </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>

活动\u detailed.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/match_reports"
tools:context="theo.testing.androidservices.fragments.MainActivityFragment">

</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/detailed_match_reports"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="theo.testing.androidservices.activities.DetailedActivity"
tools:ignore="MergeRootFrame">
</FrameLayout>

最后

片段详细活动

public class DetailedActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detailed);

    if(savedInstanceState == null){
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.detailed_match_reports,new DetailedActivityFragment())
                .commit();
    }
   }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recLayout"
tools:context=".activities.MainActivity"
android:background="#fff">

<android.support.v7.widget.RecyclerView

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/listview_match_reports"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    />

 </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>


我错过了什么

谢谢

西奥。

改变这些

articleTextView = (TextView)getActivity().findViewById(R.id.articleTextView);
imageView = (ImageView)getActivity().findViewById(R.id.imageNews);

您正在将数据传递到
DetailActivity
。因此,首先在
DetailActivity
中检索,然后传递到
DetailFragment


您还需要使用
Bundle
setArguments(Bundle)

将数据传递到
DetailFragment
,您的文本视图articleTextView位于片段中,但您可以在activitys xml中找到它:

articleTextView = (TextView)getActivity().findViewById(R.id.articleTextView);
插图:你应该做:

articleTextView = (TextView)(v.findViewById(R.id.articleTextView));

对Imageviewl执行同样的操作。

请添加错误日志,以便我们能够更容易地识别问题。非常感谢,先生。非常感谢,先生。