Android - 从子 activity onResume() 开始完成父 activity
Android - Starting a finished parent activity from child activity onResume()
我有一个没有附加视图的 MainActivity。这是启动 activity,它检查现在是星期几,并为该特定日期启动一个新的 activity。一周中的每一天我都有一个 activity。
检查当天并开始当天的 activity 后,我调用 finish() 以便销毁 MainActivity(这样当我单击后退按钮时不会显示空白屏幕并且我可以退出应用程序)。
现在我面临的问题是--
如果我单击主页按钮或应用程序转到后台,如果日期发生变化并且应用程序再次出现在前台,则会显示前一天的视图。它实际上应该得到更新以显示当天的 activity.
由于onResume()是在应用回到前台后调用的,所以我尝试在每天activity的onResume()中添加以下代码再次启动MainActivity并检查当天然后开始那个特别的 activity。但是只显示一个空白屏幕。
请查找以下代码:
主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
calendar= Calendar.getInstance();
int day=calendar.get(Calendar.DAY_OF_WEEK);
switch(day)
{
case Calendar.SUNDAY: {
Intent intent=new Intent(MainActivity.this, SundayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.MONDAY: {
Intent intent=new Intent(MainActivity.this, MondayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.TUESDAY: {
Intent intent=new Intent(MainActivity.this, TuesdayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.WEDNESDAY: {
Intent intent=new Intent(MainActivity.this, WednesdayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.THURSDAY: {
Intent intent=new Intent(MainActivity.this, ThursdayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.FRIDAY: {
Intent intent=new Intent(MainActivity.this, FridayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.SATURDAY: {
Intent intent=new Intent(MainActivity.this, SaturdayTabActivity.class);
startActivity(intent);
break;
}
}
finish();
}
SaturdayTabActivity onResume() 方法
@Override
protected void onResume() {
super.onResume();
Calendar calendar= Calendar.getInstance();
int day=calendar.get(Calendar.DAY_OF_WEEK);
if (day != 6)
{
System.out.println("day changed-----");
Intent intent=new Intent(SaturdayTabActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
请帮助我了解这是否是正确的方法,或者我是否遗漏了什么。
在 AndroidManifest 文件中为 MainActivity 添加 launchMode="singleTask"..
<activity
android:name=".MainActivity"
android:launchMode="singleTask"/>
我有一个没有附加视图的 MainActivity。这是启动 activity,它检查现在是星期几,并为该特定日期启动一个新的 activity。一周中的每一天我都有一个 activity。 检查当天并开始当天的 activity 后,我调用 finish() 以便销毁 MainActivity(这样当我单击后退按钮时不会显示空白屏幕并且我可以退出应用程序)。
现在我面临的问题是--
如果我单击主页按钮或应用程序转到后台,如果日期发生变化并且应用程序再次出现在前台,则会显示前一天的视图。它实际上应该得到更新以显示当天的 activity.
由于onResume()是在应用回到前台后调用的,所以我尝试在每天activity的onResume()中添加以下代码再次启动MainActivity并检查当天然后开始那个特别的 activity。但是只显示一个空白屏幕。
请查找以下代码:
主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
calendar= Calendar.getInstance();
int day=calendar.get(Calendar.DAY_OF_WEEK);
switch(day)
{
case Calendar.SUNDAY: {
Intent intent=new Intent(MainActivity.this, SundayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.MONDAY: {
Intent intent=new Intent(MainActivity.this, MondayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.TUESDAY: {
Intent intent=new Intent(MainActivity.this, TuesdayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.WEDNESDAY: {
Intent intent=new Intent(MainActivity.this, WednesdayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.THURSDAY: {
Intent intent=new Intent(MainActivity.this, ThursdayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.FRIDAY: {
Intent intent=new Intent(MainActivity.this, FridayTabActivity.class);
startActivity(intent);
break;
}
case Calendar.SATURDAY: {
Intent intent=new Intent(MainActivity.this, SaturdayTabActivity.class);
startActivity(intent);
break;
}
}
finish();
}
SaturdayTabActivity onResume() 方法
@Override
protected void onResume() {
super.onResume();
Calendar calendar= Calendar.getInstance();
int day=calendar.get(Calendar.DAY_OF_WEEK);
if (day != 6)
{
System.out.println("day changed-----");
Intent intent=new Intent(SaturdayTabActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
请帮助我了解这是否是正确的方法,或者我是否遗漏了什么。
在 AndroidManifest 文件中为 MainActivity 添加 launchMode="singleTask"..
<activity
android:name=".MainActivity"
android:launchMode="singleTask"/>