android中的多个活动和意图

时间:2016-05-19 18:57:35

标签: java android android-intent

嗨,大家好

我有简单的Android应用程序,有3个活动A,B,C

活动是主要活动,B,C是childes。

A | - >乙

A | - > ç

我已经知道如何通过按钮转移到其他活动 但我有奇怪的问题 当我启动应用程序时,我只能第一次去那些活动,当我按回btn到主要活动&按下另一个活动的按钮应用程序将粉碎并显示此错误“不幸的是,应用程序已停止。”

例如 当主要活动(a)被加载时,我将点击2ndActivity(B)的btn 它将成功开启第二项活动

但是

当我按下系统btn并尝试点击第3个活动的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>

3 个答案:

答案 0 :(得分:1)

问题解决了

这可能会帮助像我这样的初学者

我将此行添加到我的清单

<activity 
            android:parentActivityName=".MainActivity" >

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

谢谢大家

答案 1 :(得分:0)

您是否尝试将清单中的意图过滤器更改为类的完整路径

例如

意图过滤

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

意图过滤

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

尝试使用activityB和activityC。

答案 2 :(得分:-1)

如果后退按钮没有正确响应,您可以始终覆盖它们以转到父活动。这是你可以做的事情:

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

将此代码添加到您的每个子活动中。