本人从网上down了一段代码 运行没有问题 可是我加入了自己程序的xml文件后 程序没有报错但是却没有反应求 高手帮忙看看 我不知道怎么描述这个错误 总之是这样我 我下了一个动态加载 apk中类的例子 我修改例子中的代码 见代码红色部分 但是 修改之后就没有反应 这个例子代码原理是这样的:首先 A程序通过类加载器 加载B程序的类然后通过反射的方式执行里面的欧诺create函数代码 我修改了代码后 没有反应 没有出现相应界面 大大们看看

package com.carey.common;import java.lang.reflect.Constructor;
import java.lang.reflect.Method;import android.app.Activity;
import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import dalvik.system.DexClassLoader;public class MainActivity extends Activity {
private static final String TAG = "MainActivity"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Bundle paramBundle = new Bundle();
paramBundle.putBoolean("KEY_START_FROM_OTHER_ACTIVITY", true);
String dexpath = "/mnt/sdcard/TestB.apk";
String dexoutputpath = "/mnt/sdcard/";
LoadAPK(paramBundle, dexpath, dexoutputpath);
}
});
} public void LoadAPK(Bundle paramBundle, String dexpath, String dexoutputpath) {
ClassLoader localClassLoader = ClassLoader.getSystemClassLoader();
DexClassLoader localDexClassLoader = new DexClassLoader(dexpath,
dexoutputpath, null, localClassLoader);
try {
PackageInfo plocalObject = getPackageManager()
.getPackageArchiveInfo(dexpath, 1); if ((plocalObject.activities != null)
&& (plocalObject.activities.length > 0)) {
String activityname = plocalObject.activities[0].name;
Log.d(TAG, "activityname = " + activityname); Class localClass = localDexClassLoader.loadClass(activityname);
Constructor localConstructor = localClass
.getConstructor(new Class[] {});
Object instance = localConstructor.newInstance(new Object[] {});
Log.d(TAG, "instance = " + instance); Method localMethodSetActivity = localClass.getDeclaredMethod(
"setActivity", new Class[] { Activity.class });
localMethodSetActivity.setAccessible(true);
localMethodSetActivity.invoke(instance, new Object[] { this }); Method methodonCreate = localClass.getDeclaredMethod(
"onCreate", new Class[] { Bundle.class });
methodonCreate.setAccessible(true);
methodonCreate.invoke(instance, new Object[] { paramBundle });
}
return;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
这是程序A 中的代码 动态加载B程序的类 b程序代码:
package com.carey.common;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;public class TestBActivity extends Activity {
private static final String TAG = "TestBActivity";
private Activity otherActivity;
 
@Override
public void onCreate(Bundle savedInstanceState) {
boolean b = false;
if (savedInstanceState != null) {
b = savedInstanceState.getBoolean("KEY_START_FROM_OTHER_ACTIVITY", false);
if (b) {
    System.out.println("进入了onCreate函数");
    this.otherActivity.setContentView(R.layout.loadmain);     
System.out.println("执行完了此函数");
}
}
if (!b) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
setContentView(R.layout.main);
}
} public void setActivity(Activity paramActivity) {
Log.d(TAG, "setActivity..." + paramActivity);
this.otherActivity = paramActivity;
}
}红色部分 是我修改的代码 执行完毕后程序没有反应也没有更改界面
原来代码是这样:
this.otherActivity.setContentView(new TBSurfaceView( this.otherActivity));运行无误 这到底是怎么回事? 求帮助!!!!!!!