希望它是片段的最后一期:)
我有两个片段(一个是常规的另一个列表),当我在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:警告:调试器 活跃;方法跟踪结果将会出现偏差
提前致谢, ķ