。getSupportFragmentManager()findFragmentById(R.id.frg_video_listing_video_listing_fragment);

时间:2015-06-10 07:20:07

标签: android android-fragments fragmentmanager

如果这是一个愚蠢的错误,请原谅我。我的活动布局(xml)中有两个片段,为了让它们进行通信,我试图在主活动中获取一个片段的实例。我已经提前完成了,但这次它抛出了错误(需要视频片段,但发现片段)我不知道我错了什么。可能只是一个愚蠢的错误。你能帮忙吗?提前谢谢。

下面是代码段:

config

下面是布局:

public class VideoListingActivity extends ActionBarActivity implements FilterFragment.OnFilterItemSelectedListener{

 public VideoListFragment videoListFragment;


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

    videoListFragment =(VideoListFragment) getSupportFragmentManager().findFragmentById(R.id.frg_video_listing_video_listing_fragment);

}

下面是片段类代码

<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"
    tools:context="my activity context">


    <fragment
        android:layout_width="match_parent"
        android:layout_height="@dimen/filter_fragment_height"
        android:name="com.text1.text2.text3.pkg.FilterFragment"
        android:id="@+id/frg_video_listing_filter_fragment"
        ></fragment>

    <fragment
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="com.text1.text2.text3.pkg.VideoListFragment"
        android:id="@+id/frg_video_listing_video_listing_fragment"
        ></fragment>

</RelativeLayout>

下面是堆栈跟踪

package com.rrdtech.vidyavaan.android.Fragments;

import android.app.Activity;
import android.app.ListFragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.rrdtech.vidyavaan.android.R;


public class VideoListFragment extends ListFragment {
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

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

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

@Override
public void onStart() {
    super.onStart();
}
}

2 个答案:

答案 0 :(得分:0)

也许您需要在XML中添加class属性。

<fragment
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:name="com.text1.text2.text3.pkg.VideoListFragment"
    class="com.text1.text2.text3.pkg.VideoListFragment"
    android:id="@+id/frg_video_listing_video_listing_fragment"/>

答案 1 :(得分:0)

你需要知道

  1. 您正在使用支持库来使用Fragment getSupportFragmentManager(),在这种情况下,您应该始终使用支持包类。
  2. VideoListFragment延长android.app.ListFragment; 而不是 android.support.v4.app.ListFragment;(此事导致错误)。并确保片段布局具有ListView"@android:id/list" ID。