ActivityNotFoundException,启动活动时出错

Posted

技术标签:

【中文标题】ActivityNotFoundException,启动活动时出错【英文标题】:ActivityNotFoundException, error starting an activity 【发布时间】:2016-08-22 06:47:31 【问题描述】:

这是我的社交片段活动,它包含按钮视图。当我单击它时,我想从一个活动切换到另一个,但是当我在手机上启动它并单击按钮时,它说“不幸的是应用程序停止了”我应该怎么做才能从一个片段切换到另一个片段。 这是我的社交片段代码: SocialFrag

我想在点击按钮时从社交片段切换到 TechGadget 片段。

这里是原木猫 Log Cat

我的应用程序包含带有 tabhlayout 的导航抽屉,我在一个选项卡中声明了按钮...而我想在单击按钮时打开新活动。

  **@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
      View rootView = inflater.inflate(R.layout.social_layout,container,false);
        b = (Button) rootView.findViewById(R.id.button2);
        b.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                Intent i = new Intent(getActivity().getApplicationContext(),TechGadgets.class);
                startActivity(i);
            
        );
        return rootView;
    
**

reutrns 错误,这里是 log cat

04-28 01:07:07.300 17089-17089/com.example.android.techfnss E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.android.techfnss, PID: 17089
                                                                              android.content.ActivityNotFoundException: Unable to find explicit activity class com.example.android.techfnss/com.example.android.techfnss.TechGadgets; have you declared this activity in your AndroidManifest.xml?
                                                                                  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1885)
                                                                                  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1579)
                                                                                  at android.app.Activity.startActivityForResult(Activity.java:3934)
                                                                                  at android.app.Activity.startActivityForResult(Activity.java:3894)
                                                                                  at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:849)
                                                                                  at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:907)
                                                                                  at android.support.v4.app.Fragment.startActivity(Fragment.java:916)
                                                                                  at com.example.android.techfnss.SocialFragment$1.onClick(SocialFragment.java:26)
                                                                                  at android.view.View.performClick(View.java:5207)
                                                                                  at android.view.View$PerformClick.run(View.java:21168)
                                                                                  at android.os.Handler.handleCallback(Handler.java:746)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-28 01:07:10.275 17089-17089/com.example.android.techfnss I/Process: Sending signal. PID: 17089 SIG: 9

【问题讨论】:

请贴日志猫 以及您为启动第二个活动而实施的代码 这个问题已经被问过无数次了。您需要使用 LogCat 输出更新您的问题。奇怪的是您没有将您的活动添加到清单或类似的东西(确保TechGadgets 是一个活动)。此外,在创建 Intent 时使用当前的 Activity 上下文而不是 Application 上下文。编辑:似乎 TechGadget 可能是一个片段。片段之间的切换与活动的处理方式不同,查看他们的文档:developer.android.com/guide/components/fragments.html 请勿将代码发布为屏幕截图。而不是将其作为文本直接放在问题中。 ActivityNotFoundException: Unable to find explicit activity class com.example.android.techfnss/com.example.android.techfnss.TechGadgets; have you declared this activity in your AndroidManifest.xml? 说明了一切。 【参考方案1】:

这个问题已经被问了几十次(至少),所以您可以通过 Google 搜索找到答案。但是,这是您的操作方式...

Button button = (Button) findViewById(R.id.my_button);
button.setOnClickListener() 
    @Override
    public void onClick(View view) 
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);
    
;

当然,您可以在自己的代码中将相关值替换为相应的值。

如果您正在寻找更具体的答案,请提出更具体的问题(有证据表明您已经进行研究以自己找到答案,或者至少是您所获得的崩溃的日志跟踪)。

【讨论】:

这不起作用,因为我在选项卡布局中使用 SocialFrag。 @Nikhil 好的。在这种情况下,也请发布您的代码,这样我们都可以准确地看到您的问题出在哪里。【参考方案2】:

您需要在onViewCreated 方法内的按钮上添加setOnClickListener,就像这样 --

public void onViewCreated(View view, Bundle savedInstanceState)
   b = (Button)view.findViewById(R.id.button2);
   b.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            Intent intent = new Intent(getContext(), 2nd_Activity.class);
            startActivity(intent);
        
    );

希望这会有所帮助!

【讨论】:

【参考方案3】:

使用此代码 -

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent);

这里,OtherActivity.class 是您要进行的活动的名称,Mainactivity.this 是您当前的活动。

【讨论】:

【参考方案4】:

您可以在创建 Fragment 时将上下文传递给它,然后在那里引用它。或者您可以只使用getActivity() 而不是getActivity().getApplicationContext(),但第一个选项是最好的,因为有时getActivity() 不起作用。 始终将上下文传递给片段。

【讨论】:

【参考方案5】:

显然它说该活动未在清单中声明,而不是扩展片段,扩展到任何类型的活动并将此行添加到 <aplication> </aplication> 正文中的清单中:

<activity android:name=".TechGadgets"></activity>

例子:

<aplication> 
... 

<activity android:name=".TechGadgets"></activity> 

...
 </application>

请关闭此问题

【讨论】:

【参考方案6】:

尝试使用下面的代码

 Intent intent = new Intent(MainActivity.this, SecondActivity.class);
 startActivity(intent);

并检查您是否在清单中添加了活动

<activity android:name=".TechGadgets"></activity>

【讨论】:

以上是关于ActivityNotFoundException,启动活动时出错的主要内容,如果未能解决你的问题,请参考以下文章

android.content.ActivityNotFoundException:

ActivityNotFoundException,启动活动时出错

如何在使用 LinkMovementMethod 时捕获异常 (ActivityNotFoundException)

尝试通过电子邮件发送多个附件时出现 ActivityNotFoundException

ActivityNotFoundException:未找到处理 Intent 可疑行为的活动

FragmentActivity 上的 ActivityNotFoundException