【发布时间】:2018-02-16 15:34:05
【问题描述】:
有一个相当简单的场景给我带来了很多麻烦。我正在使用嵌入式片段制作一个非常简单的活动。这个片段只是一个显示一些图像的 Gridview。当使用 Kotlin 扩展引用 Gridview 以直接引用 XML id 时,就会出现问题。 这里有什么问题? kotlinx 对静态片段不起作用吗?
错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.android_me/com.example.android.android_me.ui.MainActivity}: java.lang.IllegalStateException: gridview_all_parts must not be null
Caused by: java.lang.IllegalStateException: gridview_all_parts must not be null at com.example.android.android_me.ui.MasterListFragment.onActivityCreated(MasterListFragment.kt:22)
带有冒犯性代码行的片段
import kotlinx.android.synthetic.main.fragment_master_list.*
class MasterListFragment: Fragment() {
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val layoutView = inflater?.inflate(R.layout.fragment_master_list, container, false)
return layoutView
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
//If this is removed, code runs
gridview_all_parts.adapter = MasterListAdapter(activity, AndroidImageAssets.getAll())
super.onActivityCreated(savedInstanceState)
}
}
片段布局:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview_all_parts"
android:layout_width="match_parent" android:layout_height="match_parent"/>
父活动布局
<?xml version="1.0" encoding="utf-8"?>
<!--have tried both class:= and android:name:=-->
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
class="com.example.android.android_me.ui.MasterListFragment"
android:id="@+id/fragment_masterlist"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
家长活动
class MainActivity: AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
【问题讨论】:
-
你能向我们展示更多的 Fragment 类,而不仅仅是“攻击性代码”吗?
-
嘿汤姆,这就是整个代码。这是我正在尝试“Kotlinize”的简单教程的一部分,因此是基本结构
标签: android android-fragments kotlin-android-extensions