簡體   English   中英

android中的多個活動和意圖

[英]multiple activities and intents in android

嗨,大家好

我有3個活動A,B,C的簡單android應用

活動是主要活動,B,C是孩子。

A | -> B

A | -> C

我已經知道如何通過按鈕轉到其他活動,但是當我啟動該應用程序時我遇到一個奇怪的問題,我只能第一次進入這些活動,而當我將btn壓回到主要活動並按下另一個活動的按鈕時,該應用程序將粉碎並顯示此錯誤“很遺憾,應用已停止。”

例如,當加載主活動(a)時,我將單擊2ndActivity(B)的btn,它將成功打開第二個活動

當我按回系統btn並嘗試單擊第三次活動的btn(c)時,應用程序將失敗並顯示錯誤

請注意,只有第一次單擊的每個活動都會成功午餐,我的意思是,如果我第一次單擊C活動的btn,則活動B將無法工作並顯示錯誤

請注意,在LogCat中找不到錯誤,並且應用程序可以在模擬器中正確運行,問題可能會在某些電話(例如我的gs4)上發生,而不是所有電話

對不起,我的英語不好

我需要你的幫助,謝謝

我的MainActivityA.java

 public class MainActivityA extends ActionBarActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    android.support.v7.app.ActionBar AB = getSupportActionBar();
    AB.hide();
    setContentView(R.layout.activity_mainA);

    ImageButton b1 = (ImageButton) findViewById(R.id.imagebtndb1);
    b1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent i = new Intent(MainActivityA.this, MainActivityB.class);
            startActivity(i);
        }
    });


    ImageButton b2 = (ImageButton) findViewById(R.id.imagebtndb3);
    b2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent i2 = new Intent(MainActivityA.this, MainActivityC.class);
            startActivity(i2);
        }
    });

我的MainActivityB

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    android.support.v7.app.ActionBar AB=getSupportActionBar();
    AB.hide();
    setContentView(R.layout.activity_main_activity2);
    WebView webView = (WebView) findViewById(R.id.webView);
    webView.setHorizontalScrollBarEnabled(false);
    webView.setVerticalScrollBarEnabled(false);
    webView.setBackgroundColor(0);
    webView.loadUrl("file:///android_asset/htm.html");



}

我的MainActivityC

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    android.support.v7.app.ActionBar AB=getSupportActionBar();
    AB.hide();
    setContentView(R.layout.activity_main_activity4);
}

我的清單

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivityB"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.activityB" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivityC"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.activityC" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

問題解決了

也許這可以幫助將來像我這樣的初學者

我將此行添加到我的清單中

<activity 
            android:parentActivityName=".MainActivity" >

<meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.myandroid.app.MainActivity" />
</activity>

多謝你們

您是否嘗試過將清單中的意圖過濾器更改為類的完整路徑

例如

目的過濾器

     action android:name="<full domain name here>.activityB"

目的過濾器

     action android:name="com.myandroid.app.activityB"

嘗試對activityB和activityC進行嘗試。

如果后退按鈕未正確響應,則可以始終覆蓋它們以轉到父活動。 您可以執行以下操作:

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent goToParentIntent = new Intent(getApplicationContext(), MainActivity.class);
    startActivity(goToParentIntent);
}

將此代碼添加到您的每個子活動中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM