ActivityGroup,Activity,TabHost注意问题,2021最新Android面试题目解答

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();

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

普通网友

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值