更新:问题已解决
根据这张图片,我试图根据每个抽屉项目打开片段。目前我只为“Easy”制作片段,其中包含一个ListView ,但我的应用 CRASHES 每次按下它。我在我的手机上运行了Android Nougat(v7.0)。
这是我的代码......
片段布局(fragment_easy.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"
tools:context="afm.pymonk.EasyFragment"
android:id="@+id/easyFragment">
<!-- TODO: Update blank fragment layout -->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/easyList"/>
</RelativeLayout>
EasyFragment.java中onCreateView内的片段JAVA代码:
View view = inflater.inflate(R.layout.fragment_easy, container, false);
String easyListContents[] = {"Introduction", "Hello World", "Operators", "Data Types",
"Simple Arithmetic Operations", "Take input from user"};
ListView easyList = (ListView) view.findViewById(R.id.easyList);
ArrayAdapter<String> easyAdapter = new ArrayAdapter<String>(EasyFragment.this.getActivity(),
android.R.layout.simple_spinner_dropdown_item, easyListContents);
easyList.setAdapter(easyAdapter);
easyList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
return;
}
});
return view;
在主要活动(Home.java)中onNavigationItemSelected内打开fragemnt的代码:
int id = item.getItemId();
if (id == R.id.icon_easy) {
EasyFragment easyFragment = new EasyFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.mainBase, easyFragment, easyFragment.getTag()).commit();
}
设备错误日志:
答案 0 :(得分:2)
在onCreateView方法中,在片段中返回view
而不是return inflater.inflate(R.layout.fragment_easy, container, false);
。
编辑:
在MainActvity中实施OnFragmentInteractionListener
例如:
public class MainActivity extends AppCompatActivity
implements OnFragmentInteractionListener {
// Implement the methods here
}
答案 1 :(得分:1)
您的easyFragment.getTag()
来电将返回null
,因为没有setTag
来电,因此只需使用一些String
标记将其与您的片段绑定,而不是{{1} }
null
更新:
您正在片段中使用接口侦听器回调,但您的活动中没有实现,因此请务必执行
manager.beginTransaction().replace(R.id.mainBase, easyFragment, "easyFrag").commit();
// ^^^^^^