之前在stackoverflow上找到过这个问题的解决方法,虽然能用,但是并不针对此最初问题的解决方法。在此把问题和解决方法一并总结如下:
问题:android 中把一个普通的activity转换成一个view,加载到想配置的布局当中去
解决方法步骤:
1、定义全局LocalActivityManager变量
LocalActivityManager mLocalActivityManager;
oncreate()方法实例化mLocalActivityManager = new LocalActivityManager((Activity) context, true);
2、在oncreate,onresume,onpause方法中分别加入如下代码:
oncreate()--------------mLocalActivityManager.dispatchCreate(arg0);参数arg0为oncreate方法的形参
onpause()--------------mLocalActivityManager.dispatchPause(isFinishing());
onresume()--------------mLocalActivityManager.dispatchResume();
3、这一步就是转换的实质代码了
public View activityToView(Context parent, Intent intent) {
final Window w = mLocalActivityManager.startActivity(parent.getClass().getName(), intent);
final View wd = w != null ? w.getDecorView() : null;
if (wd != null) {
wd.setVisibility(View.VISIBLE);
wd.setFocusableInTouchMode(true);
((ViewGroup) wd).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);}
return wd;
}
如果不加第二步代码会报如下错误:
Caused by: java.lang.IllegalStateException: Activities can't be added until the containing group has been created.
解决方法来自:stackoverflow 链接:<a target=_blank target="_blank" href="http://stackoverflow.com/questions/3163884/android-tabhost-without-tabactivity">http://stackoverflow.com/questions/3163884/android-tabhost-without-tabactivity</a>