按下Navigaiton抽屉项目时应用程序崩溃

时间:2017-08-09 15:16:59

标签: java android android-fragments android-navigation-drawer crash

更新:问题已解决

enter image description here

根据这张图片,我试图根据每个抽屉项目打开片段。目前我只为“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();
}

设备错误日志:

enter image description here

2 个答案:

答案 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();
//                                                                 ^^^^^^