Bundle b
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
undle = new Bundle();
bundle.putSerializable(“pollingRequestvo”, pollingRequestvo);
bundle.putInt(“type”, type);
intent.putExtras(bundle);
Holder.viewSwitcher.removeAllViews();
View view = ((ActivityGroup) getParent())
.getLocalActivityManager()
.startActivity(PollingResultActivity.class.getSimpleName(),
intent).getDecorView();
Holder.viewSwitcher.addView(view);
currentActivity = false;
}
这里的view实际是我们的父Activity(ActivityGroup)中的容器。
1.3、getLocalActivityManager().startActivity()前面一个参数PollingManagementActivitySub.class也是在非常重要,我在项目开发的时候,被它坑死了 ,它可以随便设置,但是当我们需要在各个Activity跳转(跳转回来)的时候(并且不要求重新创建新的Activity的时候),这个值必须保证相同,如果要求重新创建Activity,这个值可以不相同。
3、当我们在各个子Activity之间跳转的时候,希望点击返回按钮进行不同的操作,会出现各种出乎意料的操作,我们应该监听返回按钮,再进行具体操作,当然监听返回按钮不是用onBackPress()方法,而是在父类(即ActivityGroup中)调用dispatchKeyEvent这个方法进行监听,这样无论我们在父Activity还是在子Activity中点击按键都会被分发这个按键事件,如果这个事件处理完毕返回true:
如下:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == event.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
String activityName = getCurrentActivity().getClass()
.getSimpleName();
if (activityName.equals(“PollingManagementActivitySub”)) {
new AlertDialog.Builder(this)
.setTitle(“注意”)
.setMessage(“确定要退出手机网管吗?”)
.setIcon(android.R.drawable.ic_menu_help)
.setPositiveButton(“确定”,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
dialog.dismiss();
finish();
}
})
.setNegativeButton(“取消”,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
dialog.cancel();
}
}).show();
} else if (activityName.equals(“PollingResultActivity”)) {
LinearLayout container = (LinearLayout) findViewById(R.id.viewSwitcher);
container.removeAllViews();
Intent intent = new Intent(getCurrentActivity(),
PollingManagementActivitySub.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
View view = getLocalActivityManager().startActivity(
PollingManagementActivitySub.class.getSimpleName(),
intent).getDecorView();
container.addView(view);
}
break;
}
}
return true;
}
今天又遇到一个纠结的问题ActivityGroup的子Activity跳转的时候遇到Android2.3.3与Android4.0的不兼容的问题,在Android2.3.3中运行好好的,但是到了Android4.0的时候,出现一个子Activity跳转到另一个Activity的时候,失去焦点的问题。必须在跳转的时候加上下面的代码(在ActivityGroup的dispatchKeyEvent方法中):
Holder.linearLayout.setFocusable(true);
Holder.linearLayout.setFocusable(true);
Holder.linearLayout.requestFocusFromTouch();