嗨,大家好
我有简单的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>
答案 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);
}
将此代码添加到您的每个子活动中。