[英]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.