2015-08-13 15 views
0

soory我是新手,我希望通過從下面的教程建立與標籤功能的刷卡視圖在我的應用程序:獲取空「onCreateView ..(捆綁savedInstanceState)」中的片段我刷卡視圖選項卡項目

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

我是成功的,但是當我嘗試在登錄sessionmanager和sqlitehandler的第一個默認選項卡視圖片段中,名爲「TopRatedFragmentActivity」.my應用程序強制關閉......「不幸已停止」。這我的代碼:

public class TopRatedFragment extends Fragment { 

private TextView txtName; 
private TextView txtEmail; 
private Button btnLogout; 

private SQLiteHandler db; 
private SessionManager session; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 

    txtName = (TextView) getView().findViewById(R.id.name); 
    txtEmail = (TextView) getView().findViewById(R.id.email); 
    btnLogout = (Button) getView().findViewById(R.id.btnLogout); 

    // SqLite database handler 
    db = new SQLiteHandler(getActivity()); 

    // session manager 
    session = new SessionManager(getActivity()); 

    if (!session.isLoggedIn()) { 
     logoutUser(); 
    } 

    // Fetching user details from sqlite 
    HashMap<String, String> user = db.getUserDetails(); 

    String name = user.get("name"); 
    String email = user.get("email"); 

    // Displaying the user details on the screen 
    txtName.setText(name); 
    txtEmail.setText(email); 

    // Logout button click event 
    btnLogout.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      logoutUser(); 
     } 
    }); 
    return rootView; 
} 
/** 
* Logging out the user. Will set isLoggedIn flag to false in shared 
* preferences Clears the user data from sqlite users table 
* */ 
private void logoutUser() { 
    session.setLogin(false); 

    db.deleteUsers(); 
    // Launching the login activity 
    Intent intent = new Intent(getActivity(), LoginActivity.class); 
    startActivity(intent); 
} 

,這我fragment_top_rated.xml代碼:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#fa6a6a" > 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_gravity="bottom" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
      <TabWidget 
       android:id="@android:id/tabs" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" /> 
      <FrameLayout 
       android:id="@android:id/tabcontent" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"/> 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="20dp" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/welcome" 
       android:textSize="20dp" /> 

      <TextView 
       android:id="@+id/name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:padding="10dp" 
       android:textColor="@color/lbl_name" 
       android:textSize="24dp" /> 

      <TextView 
       android:id="@+id/email" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="13dp" /> 

      <Button 
       android:id="@+id/btnLogout" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="40dip" 
       android:background="@color/btn_logut_bg" 
       android:text="@string/btn_logout" 
       android:textAllCaps="false" 
       android:textColor="@color/white" 
       android:textSize="15dp" /> 
     </LinearLayout> 
</RelativeLayout> 

有人請幫我...什麼是錯從我的代碼?調試器顯示從onCreate(Bundle savedInstanceState)中獲得null。但我不知道如何解決它

這裏,錯誤的logcat:

 
08-13 21:55:08.204 6243-6243/id.nijushop.app.ikutan W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa6282288) 
08-13 21:55:08.208 6243-6243/id.nijushop.app.ikutan E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NullPointerException 
      at id.nijushop.app.ikutan.TopRatedFragment.onCreateView(TopRatedFragment.java:32) 
      at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 
      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 
      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 
      at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:490) 
      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
      at android.support.v4.view.ViewPager.populate(ViewPager.java:1105) 
      at android.support.v4.view.ViewPager.populate(ViewPager.java:951) 
      at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1473) 
      at android.view.View.measure(View.java:15172) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:15172) 
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:833) 
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
      at android.view.View.measure(View.java:15172) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148) 
      at android.view.View.measure(View.java:15172) 
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848) 
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
      at android.view.Choreographer.doFrame(Choreographer.java:525) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4745) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

顯示logcat的錯誤... –

+0

TQ @dieter_h,我是編輯我的職務,並attch的logcat – raregroove

回答

0

的問題是在你的onCreateView()。您正在查找使用getView().findViewById()在您的onCreateView()的意見。這種方法不推薦,我敢打賭你的getView()返回null。從文檔:

getView() 
Get the root view for the fragment's layout (the one returned by onCreateView(LayoutInflater, ViewGroup, Bundle)), if provided. 

getView()將非空onCreateView()返回之後。

無需在onCreateView()中使用getView()。做到這一點,而不是:

txtName = (TextView) rootView.findViewById(R.id.name); 
txtEmail = (TextView) rootView.findViewById(R.id.email); 
btnLogout = (Button) rootView.findViewById(R.id.btnLogout); 
+0

TQ @androholic,這是完全的作品,TQ這麼多... – raregroove

相關問題