2016-04-27 65 views
-7

這是我的社交片段活動,它包含按鈕視圖。當我點擊它時,我想從一個活動切換到另一個,但是當我在手機上激活它並點擊按鈕時,它說「不幸的應用程序已停止」我應該如何從一個片段切換到其他片段。 這裏是我的社交分段代碼: SocialFragActivityNotFoundException,啓動活動時出錯

我想從社交片段切換到TechGadget Fragment on button click。

這裏是登錄貓 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錯誤,這裏是登錄貓

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 
+0

發佈日誌貓請 –

+0

和代碼要實現啓動第二ACTIV ity –

+2

以前這個問題已經被問過很多次了。您需要使用LogCat輸出更新您的問題。賠率是你沒有將你的活動添加到清單或類似的東西(請確保'TechGadgets'是一個活動)。另外,在創建Intent而不是Application上下文時使用當前的Activity上下文。編輯:看來TechGadget可能是一個片段。片段之間的切換處理與「活動」處理方式不同,請查看其文檔:http://developer.android.com/guide/components/fragments.html – chRyNaN

回答

0

這個問題已經被問的十倍(至少),所以你可能已經發現通過谷歌搜索答案。然而,這裏是你如何做到這一點...

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); 
    } 
}; 

當然,你會在自己的代碼對應一個替換相關的值。

如果您正在尋找更具體的答案,可以提出一個更具體的問題(證據表明您已經完成研究,自己找到答案,或者至少從發生崩潰的日誌追蹤)。

+0

這不工作,因爲我在標籤佈局中使用SocialFrag。 – Nikhil

+0

@Nikhil好吧。在這種情況下,**也會發布你的代碼**,所以我們都可以看到你的問題來自哪裏。 –

0

使用此代碼 -

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

這裏,OtherActivity.class是你想要去的活動的名稱,並Mainactivity.this是您的當前活動。

0

您需要在您的按鈕添加setOnClickListeneronViewCreated方法,這樣的 -

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); 
     } 
    }); 
} 

希望這有助於!

0

當您創建它並在那裏引用它時,您可以將該上下文傳遞給Fragment。或者您可以使用getActivity()而不是getActivity().getApplicationContext(),但第一種選擇是最好的,因爲有時getActivity()只是不起作用。 總是將上下文傳遞給片段。

0

顯然它說,該活動不會在清單中聲明,而不是延長片段,擴展到任何類型的活動,這行添加到您的清單中的<aplication> </aplication>體內:

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

例子:

<aplication> 
... 

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

... 
</application> 

並關閉此問請