未在main_activity的setcontentview中创建ListFragment

时间:2014-04-19 19:48:57

标签: android android-fragments oncreate setcontentview

希望它是片段的最后一期:)

我有两个片段(一个是常规的另一个列表),当我在main_activity上运行setContentView时,我注意到正在调用常规片段的onCreate,另一方面没有调用ListFragment onCreate。

除了我没有覆盖ListFragment中的onAttach + onDetach之外,它们两者几乎完全相同(它是针对常规回调中的回调完成的)。 我所做的覆盖是:onCreate,onCreateView,onActivityCreated,onStart(启动asynctask),onSaveInstanceState。

你能告诉我这个问题是什么吗?因为我在用于ListFragment的fragmentManager中获得了NullPointerEception。

Somecode:

activity_main.xml中:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mynews.mynews.MainActivity">

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <fragment android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="com.mynews.mynews.NavigationDrawerFragment"
        tools:layout="@layout/fragment_navigation_drawer" />

    <fragment android:id="@+id/rss_feed"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:name="com.kfir.bs.mynews.mynews.NewsFeed"
        tools:layout="@layout/fragment_news_feed" />

</android.support.v4.widget.DrawerLayout>

活动:

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            setContentView(R.layout.activity_main);
            mNavigationDrawerFragment = (NavigationDrawerFragment)
                    getFragmentManager().findFragmentById(R.id.navigation_drawer);
            mNewsFeed = (NewsFeed) getFragmentManager().findFragmentById(R.id.rss_feed);

片段:

public class NavigationDrawerFragment extends Fragment {
    private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
    private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
    private NavigationDrawerCallbacks mCallbacks;
    private ActionBarDrawerToggle mDrawerToggle;

    private DrawerLayout mDrawerLayout;
    private ListAdapter adapter;
    private ListView mDrawerListView;
    private View mFragmentContainerView;

    private int mCurrentSelectedPosition = 0;
    private boolean mFromSavedInstanceState;
    private boolean mUserLearnedDrawer;

    public NavigationDrawerFragment() {
    }

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

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
        mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);

        if (savedInstanceState != null) {
            mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
            mFromSavedInstanceState = true;
        }

        adapter = new ListAdapter(getActionBar().getThemedContext(), generateData());

        selectItem(mCurrentSelectedPosition);
    }

在ListFragment上:

public class NewsFeed extends ListFragment
{
    private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";

    View feedView;
    ListAdapterFeed rssListAdapter;

    private int mCurrentSelectedPosition = 0;
    private boolean mFromSavedInstanceState;

    public NewsFeed() {
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

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

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());

        if (savedInstanceState != null) {
            mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
            mFromSavedInstanceState = true;
        }

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }

添加stacktrace:

https://www.dropbox.com/s/dxrz0925u3nfmgp/ddms7983186720865326533.trace

logcat的:

  

04-19 23:15:49.901 11473-11473 / com.kfir.bs.mynews.mynews E / SELinux:   功能:selinux_android_load_priority [0],没有sepolicy文件   04-19 23:15:49.901 11473-11473 / com.kfir.bs.mynews.mynews E / SELinux:   功能:selinux_android_load_priority [1],没有sepolicy   版本文件04-19 23:15:49.901 11473-11473 / com.kfir.bs.mynews.mynews   E / SELinux:功能:selinux_android_load_priority,加载版本   是VE = SEPF_GT-N7100_4.3_0018 04-19 23:15:49.901   11473-11473 / com.kfir.bs.mynews.mynews E / SELinux:   selinux_android_seapp_context_reload:加载了seapp_contexts文件   来自/ seapp_contexts 04-19 23:15:49.906   11473-11473 / com.kfir.bs.mynews.mynews D / dalvikvm:延迟启用   CheckJNI 04-19 23:15:49.991 11473-11473 / com.kfir.bs.mynews.mynews   I / System.out:发送WAIT块04-19 23:15:49.991   11473-11473 / com.kfir.bs.mynews.mynews W / ActivityThread:应用程序   com.kfir.bs.mynews.mynews正在等待端口8100上的调试器...   04-19 23:15:50.036 11473-11479 / com.kfir.bs.mynews.mynews I / dalvikvm:   调试器处于活动状态04-19 23:15:50.191   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:调试器有   连线04-19 23:15:50.191 11473-11473 / com.kfir.bs.mynews.mynews   I / System.out:等待调试器解决... 04-19 23:15:50.391   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:50.591   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:50.791   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:50.996   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:51.196   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:51.396   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:51.596   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:51.796   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:等待   调试器解决... 04-19 23:15:51.996   11473-11473 / com.kfir.bs.mynews.mynews I / System.out:调试器有   定居(1310)04-19 23:15:52.911   11473-11473 / com.kfir.bs.mynews.mynews D / dalvikvm:threadid = 1:仍然   撤消后停止(sc = 1 dc = 1)04-19 23:16:17.531   11473-11479 / com.kfir.bs.mynews.mynews I / dalvikvm:TRACE STARTED:   &#39; [DDMS]&#39; 8192KB 04-19 23:16:17.546   11473-11479 / com.kfir.bs.mynews.mynews D / dalvikvm:+++ active profiler   现在计算1 04-19 23:16:24.391 11473-11473 / com.kfir.bs.mynews.mynews   E / MoreInfoHPW_ViewGroup:父视图不是TextView 04-19   23:16:27.771 11473-12572 / com.kfir.bs.mynews.mynews I / dalvikvm:   threadid = 11:等待方法跟踪完成04-19 23:16:48.961   11473-11473 / com.kfir.bs.mynews.mynews E / MyNews:   Exceptionjava.lang.NullPointerException 04-19 23:17:15.451   11473-11479 / com.kfir.bs.mynews.mynews D / dalvikvm:+++ active profiler   现在计算0 04-19 23:17:15.711 11473-11479 / com.kfir.bs.mynews.mynews   I / dalvikvm:TRACE STOPPED:写44458记录04-19 23:17:15.711   11473-11479 / com.kfir.bs.mynews.mynews W / dalvikvm:警告:调试器   活跃;方法跟踪结果将会出现偏差

提前致谢, ķ

0 个答案:

没有答案