【问题标题】:App crashes while trying to navigate to fragment from Image View尝试从图像视图导航到片段时应用程序崩溃
【发布时间】:2019-02-15 14:38:00
【问题描述】:

单击 ImageView 时应用程序崩溃。

单击图像视图后尝试导航到带有卡片视图的片段。也存在片段重影问题,但该代码现在已被注释。 我也尝试过修复它,但没有成功。

这是我的代码:

ma​​inroute.java:

 wiButton.setOnClickListener(new View.OnClickListener() {
            @Override
            //@SuppressWarnings("ResourceType")
            public void onClick(View v) {

                FragmentManager mFragmentManager = getActivity().getSupportFragmentManager();//.findFragmentByTag("WifiFragment");

                /*if (mFragment == null) {
                    // wifiFragment = WifiFragment.newInstance();
                    mFragmentTransaction.add(R.id.WifiLayout, wifiFragment, "WifiFragment");
                } else {
                    wifiFragment = (WifiFragment) mFragment;*/

                    FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
                    WifiFragment wifiFragment = new WifiFragment();
                    mFragmentTransaction.add(R.id.WifiLayout, wifiFragment);
                    mFragmentTransaction.commit();
                    fICardView.setVisibility(View.VISIBLE); 
                }

            });

logcat 是:

2019-02-15 21:32:08.960 15780-15780/com.felixxiong.android.city E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.felixxiong.android.city, PID: 15780
    java.lang.IllegalArgumentException: No view found for id 0x7f07002f (com.penghaoxiong.android.cityexploration:id/WifiLayout) for fragment WifiFragment{6e89def #4 id=0x7f07002f}
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1454)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit

...
2019-02-15 21:32:09.774 3275-15841/? E/EntrySyncManager: Cannot determine account name: drop request
2019-02-15 21:32:09.775 3275-15841/? E/NowController: Failed to access data from EntryProvider. ExecutionException.
    java.util.concurrent.ExecutionException: com.google.android.apps.gsa.sidekick.main.h.n: Could not complete scheduled request to refresh entries. ClientErrorCode: 3
        at com.google.common.util.concurrent.d.eA(SourceFile:85)
        at com.google.common.util.concurrent.d.get(SourceFile:23)
        at com.google.common.util.concurrent.l.get(SourceFile:2)
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cbB(SourceFile:49)
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cbA(SourceFile:181)
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.bh.run(Unknown Source:2)
        at com.google.android.apps.gsa.shared.util.concurrent.at.run(SourceFile:4)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4)
        at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4)
        at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
        at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6)
     Caused by: com.google.android.apps.gsa.sidekick.main.h.n: Could not complete scheduled request to refresh entries. ClientErrorCode: 3
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.ar.az(Unknown Source:4)
        at com.google.common.util.concurrent.q.ap(SourceFile:7)
        at com.google.common.util.concurrent.p.run(SourceFile:32)
        at com.google.common.util.concurrent.bt.execute(SourceFile:3)
        at com.google.common.util.concurrent.d.b(SourceFile:275)
        at com.google.common.util.concurrent.d.addListener(SourceFile:135)
        at com.google.common.util.concurrent.p.b(SourceFile:3)
        at com.google.android.apps.gsa.shared.util.concurrent.h.a(SourceFile:16)
        at com.google.android.apps.gsa.shared.util.concurrent.h.a(SourceFile:13)
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cbB(SourceFile:47)
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.be.cbA(SourceFile:181) 
        at com.google.android.apps.gsa.staticplugins.nowstream.b.a.bh.run(Unknown Source:2) 
        at com.google.android.apps.gsa.shared.util.concurrent.at.run(SourceFile:4) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at com.google.android.apps.gsa.shared.util.concurrent.b.g.run(Unknown Source:4) 
        at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) 
        at com.google.android.apps.gsa.shared.util.concurrent.b.aw.run(SourceFile:4) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 
        at com.google.android.apps.gsa.shared.util.concurrent.b.i.run(SourceFile:6) 
2019-02-15 21:32:09.777 1814-1827/? E/memtrack: Couldn't load memtrack module

我试过这个帖子:Android Fragment no view found for ID?

我试图找到我的 r.java 苍蝇,我找到了我的 wifilayout id: r.java:

public static final int WifiLayout=0x7f07002f;

此片段的另一个函数中也出现了同样的问题。

我试过getChildFragmentManager()

noButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentManager mFragmentManager = getChildFragmentManager();
                FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction();
                NoteFragment noteFragment = new NoteFragment();
                mFragmentTransaction.add(R.id.NoteLayout, noteFragment);
                mFragmentTransaction.commit();
                fICardView.setVisibility(View.VISIBLE);
            }

        });

非常感谢。

【问题讨论】:

  • 那么,您尝试将这些R.id....Layouts 用作片段的容器布局是什么?请注意,容器布局需要已经存在(例如在托管活动中),它不能是正在添加的片段的一部分。
  • 我尝试制作一个 CardView,并动态切换 ImageView 以使 CardView 显示,这个 cardView 在 mainActivity XML 中,并加载片段,并且有重影错误(mainRoute.java-comment 代码)。在旧版本中,点击成功是成功的...

标签: android android-fragments imageview onclicklistener cardview


【解决方案1】:

如果你的布局文件WifiLayout在布局文件夹中,你必须使用R.layout.WifiLayout而不是R.id.WifiLayout

你所有的布局文件都是一样的。

最好的

【讨论】:

  • 我的WifiLayout是xml文件中的android:id,不是布局文件名。当我将id 更改为layout 时,android studio 提示我'Expected resource of type id'...
  • 你能发布你的布局xml文件吗?
  • 只是fragment有cardview,可见性没了,其他XML:wifi frag XML和note frag XML布局都有ID…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多