使用OnItemClickListener将Listview Fragment分段为事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用OnItemClickListener将Listview Fragment分段为事务相关的知识,希望对你有一定的参考价值。

我有两个片段。

public class ListNav extends Fragment
public class SwipeNav extends Fragment

我使用'ListNav'类创建了列表视图。我想在点击字符串数组的任何项目时使用'setOnItemClickListener'将片段交换到SwipeNav Fragment。使用以下时得到结果。

 @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    lv = (ListView) view.findViewById(R.id.my_listView);
    inputS=(TextView) view.findViewById(R.id.inputSearch);

    ArrayAdapter<CharSequence> aa = ArrayAdapter.createFromResource(getContext(), R.array.tab_titles, android.R.layout.simple_list_item_1);
    lv.setAdapter(aa);

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
         inputS.setText((String) lv.getAdapter().getItem(i));

        }
    });

但我需要点击'ListNav'上的字符串数组中的项目,它将打开新的片段'SwipeNav',它会使用滑动视图打开相同字符串数组中的所有项目。我想在ListNav中向同一项目显示相同的项目SwipeNav。为此,我无法实施。我用下面的方法却失败了。错误消息:不幸的是app停止了。

            SwipeNav fragment = new SwipeNav();
            FragmentTransaction transaction = 
            getFragmentManager().beginTransaction();
            transaction.replace(R.id.nav_list, fragment);
            transaction.addToBackStack(null);
            transaction.commit(); 

swipe n av.Java

public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    myPagerAdapter = new 
    MyPagerAdapter(getChildFragmentManager(),getContext());
    viewPager = (ViewPager) view.findViewById(R.id.pager);
    viewPager.setAdapter(myPagerAdapter);

Logcat错误:

                Shutting down VM
                W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4d09b20)
                E/AndroidRuntime: FATAL EXCEPTION: main
                java.lang.IllegalArgumentException: No view found for id 0x7f090067  (..:id/nav_list) for fragment SwipeNav{529dd108 #2 id=0x7f090067}
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1413)
                  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
                  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
                  at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
                  at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
                  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
                  at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
                  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
                  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
                  at android.os.Handler.handleCallback(Handler.java:733)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:136)
                  at android.app.ActivityThread.main(ActivityThread.java:5001)
                  at java.lang.reflect.Method.invokeNative(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:515)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                  at dalvik.system.NativeStart.main(Native Method)

SwipeNav.java也在导航菜单中。它会使用滑动视图打开所有项目。 SwipeNav没有错误。

答案

对应于R.id.nav_list的视图是否在活动中?如果是这样,您的片段无法找到活动中的视图。要么对活动进行回调,然后从活动中替换片段,要么使用view.rootView.findViewById(R.id.nav_list)获取视图并提供其ID。

以上是关于使用OnItemClickListener将Listview Fragment分段为事务的主要内容,如果未能解决你的问题,请参考以下文章

获取 Android Studio 中 onItemClickListener 中每一行的 id

两个片段之间的 onItemClickListener

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

OnItemClickListener 为 ListView 使用 ArrayAdapter

onItemClickListener 未在自定义 ArrayAdapter 上触发

使用 OnItemClickListener 列出视图片段到片段事务