2014-09-23 85 views
-2

我是新來的片段,並希望在主要活動中存在下一個和上一個按鈕並單擊下一個按鈕時轉到下一個片段並且上按下後退按鈕它去到以前的fragment.So我想設置第一個片段作爲起始片段。所以我做了以下內容:Android片段:在片段之間切換,發生InflateException

package com.example.marinasignup; 

import android.os.Bundle; 
import android.app.Activity; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends FragmentActivity { 
RegistrationData robj; 
Button btnnext,btnprev; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btnnext=(Button) findViewById(R.id.btnnext); 
     btnprev=(Button) findViewById(R.id.btnprev); 
     robj=new RegistrationData(); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       FragmentOne fragment = new FragmentOne(); 
       fragmentTransaction.add(R.id.signup_fragment, fragment); 
       fragmentTransaction.commit(); 
     btnnext.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 


      } 
     }); 
     btnprev.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 


      } 
     }); 
    } 



} 

但我得到了在logcat中出現以下錯誤:

09-23 13:35:00.671: E/AndroidRuntime(20940): FATAL EXCEPTION: main 
09-23 13:35:00.671: E/AndroidRuntime(20940): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.marinasignup/com.example.marinasignup.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.os.Looper.loop(Looper.java:130) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.ActivityThread.main(ActivityThread.java:3689) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at java.lang.reflect.Method.invokeNative(Native Method) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at java.lang.reflect.Method.invoke(Method.java:507) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at dalvik.system.NativeStart.main(Native Method) 
09-23 13:35:00.671: E/AndroidRuntime(20940): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:587) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.Activity.setContentView(Activity.java:1657) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at com.example.marinasignup.MainActivity.onCreate(MainActivity.java:20) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
09-23 13:35:00.671: E/AndroidRuntime(20940): ... 11 more 
09-23 13:35:00.671: E/AndroidRuntime(20940): Caused by: java.lang.NullPointerException 
09-23 13:35:00.671: E/AndroidRuntime(20940): at java.lang.VMClassLoader.findLoadedClass(Native Method) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:389) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at java.lang.ClassLoader.loadClass(ClassLoader.java:541) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.support.v4.app.Fragment.isSupportFragmentClass(Fragment.java:436) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:255) 
09-23 13:35:00.671: E/AndroidRuntime(20940): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
09-23 13:35:00.671: E/AndroidRuntime(20940): ... 20 more 

主要的xml文件如下所示:

爲fragmentone
<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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <fragment 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/signup_fragment" 
     /> 

    <Button 
     android:id="@+id/btnprev" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_marginRight="31dp" 
     android:layout_toLeftOf="@+id/btnnext" 
     android:text="PREV" /> 

    <Button 
     android:id="@+id/btnnext" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/btnprev" 
     android:layout_alignBottom="@+id/btnprev" 
     android:layout_alignRight="@+id/signup_fragment" 
     android:layout_marginRight="73dp" 
     android:text="NEXT" /> 

</RelativeLayout> 

代碼:

package com.example.marinasignup; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class FragmentOne extends Fragment { 

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

} 

fragmentone.xml

<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:background="#4ECDC4" 
    android:id="@+id/frag1" 
    > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="FRAGMENT ONE" /> 

</RelativeLayout> 
+0

[什麼是你的問題?](http://stackoverflow.com/help/how-to-ask) – 0101100101 2014-09-23 08:13:45

+0

什麼是行09-23 13:35:00.671:E/AndroidRuntime(20940):at com .example.marinasignup.MainActivity.onCreate(MainActivity.java:20)'? – EpicPandaForce 2014-09-23 08:14:35

+0

也是'FragmentOne'的郵政編碼 – EpicPandaForce 2014-09-23 08:15:05

回答

1

相信我,不要嘗試自己實現該功能。我做了(對於一個特殊的用例來很好地支持手機和平板電腦屏幕),而且它並不好玩。改爲將ViewPager與FragmentPagerAdapter結合使用。