Java Android:动态地将不同的布局加载到另一个布局中

Java Android:动态地将不同的布局加载到另一个布局中,java,android,layout,dynamic,Java,Android,Layout,Dynamic,我会说到点子上的 我在自己的文件DynamicMapLoader.java中有这个类: public class DynamicMapLoader extends Activity{ public void Load(int mapInt) { int mapArr[] = { R.id.map1, R.id.map2 //TODO:expand }; int mapToLoad = mapAr

我会说到点子上的

我在自己的文件DynamicMapLoader.java中有这个类:

public class DynamicMapLoader extends Activity{

public void Load(int mapInt) {

    int mapArr[] = {
            R.id.map1,
            R.id.map2
            //TODO:expand
    };

    int mapToLoad = mapArr[mapInt];

    FrameLayout flContainer = (FrameLayout) findViewById(R.id.frameLayout3);
    LinearLayout flContent = (LinearLayout) findViewById(mapToLoad);
    flContainer.addView(flContent);
}
}
我有以下代码,在主活动中调用DynamicMapLoader:

DynamicMapLoader ml = new DynamicMapLoader();
ml.Load(0);
frameLayout3位于main.xml中:

<FrameLayout
    android:layout_width="wrap_content"
    android:id="@+id/frameLayout3"
    android:layout_below="@+id/editText1"
    android:layout_alignParentLeft="true"
    android:layout_height="350dp">
</FrameLayout>
有什么建议吗?提前谢谢。

代替

int mapArray[]...
试一试


另外,请在FATAL EXCEPTION:main下发布完整的输出,以便我们可以在更详细的级别上查看出了什么问题

在调用
findviewbyd()之前,您必须
设置contentview(R.Layout.the Layout文件)

或者将布局放大到一个视图,然后
view.findViewByID()
以获得所需的视图

我认为您在maptoload中没有获得R.id.map1/2的值,而是在两个独立的int变量中获得单独的值,并将它们分配给mapArr……我希望这会起作用。@hanry我做了
int map1=R.id.map1;int map2=R.id.map2并将每个都分配给阵列。仍然不起作用,同样的错误:(无论如何,谢谢。仍然在寻找解决方案。可能是你的答案。@hanry-hmm。谢谢!这解决了我遇到的一些其他问题。你不应该实例化自己的活动。当你启动
意图时,操作系统会帮你完成这项工作。请阅读活动生命周期()以及如何正确地激发意图()。对不起,伙计。什么都没有发生。相同的旧错误。我现在要添加完整的输出。我已经在FrameLayout对象上方添加了
setContentView(R.layout.main);
。现在LogCat显示相同的NPE错误,但指向
setContentView(R.layout.main)是的。虽然现在是frameLayout1,因为我更新并删除了不必要的frameLayouts。但这不是重点。frameLayout1位于main.xml中,如原问题所述。
10-01 06:20:36.891: ERROR/AndroidRuntime(992): FATAL EXCEPTION: main
10-01 06:20:36.891: ERROR/AndroidRuntime(992): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cep/com.cep.MapricotActivity}: java.lang.NullPointerException
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.os.Looper.loop(Looper.java:123)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.ActivityThread.main(ActivityThread.java:3683)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at java.lang.reflect.Method.invokeNative(Native Method)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at java.lang.reflect.Method.invoke(Method.java:507)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at dalvik.system.NativeStart.main(Native Method)
10-01 06:20:36.891: ERROR/AndroidRuntime(992): Caused by: java.lang.NullPointerException
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.Activity.findViewById(Activity.java:1647)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at com.cep.DynamicMapLoader.Load(DynamicMapLoader.java:31)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at com.cep.MapricotActivity.onCreate(MapricotActivity.java:207)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-01 06:20:36.891: ERROR/AndroidRuntime(992):     ... 11 more
int mapArray[]...
Integer mapArray[]...