【问题标题】:Android : Fragment did not create a viewAndroid:片段没有创建视图
【发布时间】:2019-10-08 11:52:51
【问题描述】:

我有MainActivity,我在其中调用了一个fragmrnt ImagesliderFragment,但它引发了Fragment com.example.pickingredients.ImagesliderFragment did not create a view. 的异常

这是我的代码的一些部分

MainActivity

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    if(savedInstanceState==null) {
        val fragment = ImagesliderFragment()
        supportFragmentManager.beginTransaction().add(R.id.fragment, fragment).commit()
    }

}

ImagesliderFragment

class ImagesliderFragment : Fragment() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    arguments?.let {
    }
}

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    inflater.inflate(R.layout.fragment_imageslider, container, false)
    return view
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    val frag_rv = view.findViewById<RecyclerView>(R.id.frag_rv)
    frag_rv.layoutManager = LinearLayoutManager(context, LinearLayout.HORIZONTAL,
    false)
    displayContent()
}

fun displayContent(){
    val contentList:ArrayList<Int> = ArrayList()
    contentList.add(R.drawable.italian)
    contentList.add(R.drawable.chinese)
    contentList.add(R.drawable.dessert)
    contentList.add(R.drawable.sushi)
    contentList.add(R.drawable.desi)
    frag_rv.adapter = ViewAdapter(contentList)
}}

XML

 <?xml version="1.0" encoding="utf-8"?>
   <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:background="@color/light_grey">

    <TextView
            android:text="@string/what_is_your_mood"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/mood_tv"
            app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
            app:layout_constraintHorizontal_bias="0.03"
            android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent"
            android:textSize="18sp"/>
    <androidx.constraintlayout.widget.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content"
                                                android:id="@+id/guideline" app:layout_constraintGuide_begin="16dp"
                                                android:orientation="vertical"/>
    <fragment
            android:layout_width="362dp"
            android:layout_height="98dp"
            android:name="com.example.pickingredients.ImagesliderFragment"
            android:id="@+id/fragment" app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="@+id/guideline"
            android:layout_marginStart="8dp" app:layout_constraintTop_toBottomOf="@+id/mood_tv"
            android:layout_marginTop="16dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.pickingredients, PID: 2506
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pickingredients/com.example.pickingredients.MainActivity}: android.view.InflateException: Binary XML file line #23: Binary XML file line #23: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3114)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7050)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
     Caused by: android.view.InflateException: Binary XML file line #23: Binary XML file line #23: Error inflating class fragment
     Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class fragment
     Caused by: java.lang.IllegalStateException: Fragment com.example.pickingredients.ImagesliderFragment did not create a view.
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3778)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:120)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:405)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:387)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.example.pickingredients.MainActivity.onCreate(MainActivity.kt:17)
        at android.app.Activity.performCreate(Activity.java:7327)
        at android.app.Activity.performCreate(Activity.java:7318)

【问题讨论】:

    标签: android android-layout android-fragments exception kotlin


    【解决方案1】:

    您没有将布局分配给片段 onCreateView 内的视图。应该是这样的。

    val view = inflater.inflate(R.layout.fragment_imageslider, container, false)
    return view
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      相关资源
      最近更新 更多