ActivityNotFoundException,启动活动时出错

时间:2016-04-27 19:09:40

标签: android xml android-fragments fragment buttonclick

这是我的社交片段活动,它包含按钮视图。当我点击它时,我想从一个活动切换到另一个活动,但是当我在手机上点击它并点击按钮时它会说"不幸的是app停止了#34;我该怎么做才能从一个片段切换到另一个片段。 这是我的社交碎片代码: SocialFrag

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

这是Log cat 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;
    }
}**

它重新出现错误,这里是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

5 个答案:

答案 0 :(得分:0)

此问题已被问过数次(至少),因此您可以通过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);
    }
};

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

如果您正在寻找更具体的答案,请提出更具体的问题(证据表明您已经进行了研究以自行找到答案,甚至至少从您遇到的崩溃中获取日志记录)。

答案 1 :(得分:0)

使用此代码 -

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

此处,OtherActivity.class是您要去的活动的名称,Mainactivity.this是您当前的活动。

答案 2 :(得分:0)

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

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 :(得分:0)

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

答案 4 :(得分:0)

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

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

示例:

<aplication> 
... 

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

...
 </application>

请关闭此问题