2017-06-11 32 views
0

这是主要活动XML我的Android应用程序崩溃下来的时候我加片段XML

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     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" 
     android:background="#71b7d6" 
     tools:context="com.csdelta.haroon.fragmentpractice.MainActivity"> 
<!--Binary XML file line #13 --> 
<fragment  
     android:id="@+id/my_frag" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:name="com.csdelta.haroon.fragmentpractice.MyFragment"/> 
    </LinearLayout> 

这是片段活动XML

<LinearLayout 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="#f7dc0f" 
     tools:context="com.csdelta.haroon.fragmentpractice.MyFragment"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Hello, This is Fragment" 
      android:textSize="25dp" 
      android:layout_margin="20dp" 
      android:textColor="#000" 
      /> 

    </LinearLayout> 

这是主要活动Java文件

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.d("Haroon", "onCreate"); 
     setContentView(R.layout.activity_main); 

    } 
} 

这里是片段Java文件

public class MyFragment extends Fragment { 

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

的logcat的消息,我得说:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.csdelta.haroon.fragmentpractice/com.csdelta.haroon.fragmentpractice.MainActivity}: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class fragment Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class fragment Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class com.csdelta.haroon.fragmentpractice.MyFragment

不是片段

下面是完整的logcat: https://pastebin.com/iss7ui16

+0

在你的情况下,你应该使用'FragmentActivity'而不是'Activity' – x0r

+0

[Android SDK错误:尝试实例化一个不是片段的类](https://stackoverflow.com/questions/24213756/android -sdk-error-trying-instantiate-a-class-that-not-a-fragment) – x0r

+0

非常感谢。它通过扩展到FragmentActivity而不是Activity来工作。 –

回答

0

我觉得你的片段延伸的支撑片段,让您的活动需要扩展AppCompatActivity而不是Activity。

+0

非常感谢。已完成 –

0

隐蔽片段的FrameLayout标签一样,

<FrameLayout 
    android:id="@+id/my_frag" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:name="com.csdelta.haroon.fragmentpractice.MyFragment"/> 
+0

它仍然无法正常工作。实际上,我想使用XML添加片段。按照实际的程序,但这里没有什么问题。 –

0

如果你得到同样的错误,只是尝试的FrameLayout作为

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

,并调用片段

getSupportFragmentManager().beginTransaction().replace(R.id.container, new MyFragment()).commit(); 
0

更改您的对此的主要活动

public class MainActivity extends FragmentActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction transaction = manager.beginTransaction(); 
    transaction.replace(R.id.my_frag, new MyFragment()).commit(); 
} 
} 
相关问题