我想添加一个LinearLayout
,代表一个包含一些元素的小面板到我的Activity
的主要AbsoluteLayout
。 我正在使用此代码,但应用程序崩溃,这是面板类的构造函数,应该将视图添加到主布局。类似的代码可以添加运行时创建的按钮,但不适用于此。Android:如何将布局添加到AbsoluteLayout
public ButtonSetupPanel(String btnName, int keyCode, View v){
AbsoluteLayout abs = (AbsoluteLayout) v.findViewById(R.id.mainbg);
LinearLayout panel = (LinearLayout) v.findViewById(R.id.btnSetupPanel);
panel.setLayoutParams(new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT, 1023, 300));
panel.setOnTouchListener(this);
abs.addView(panel);
}
logcat的:(我用突出库)
06-12 22:43:22.268:E/AndroidRuntime(8146):致命异常:主 06-12 22时43分: 22.268:E/AndroidRuntime(8146): java.lang.RuntimeException:无法启动服务 [email protected] Intent {act = SHOW cmp = com.vektor.amapper/.windows。 MainWindow(有额外)}: java.lang.NullPointerException 06-12 22:43:22.268: E/AndroidRuntime(8146):at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2507) 06-12 22:43:22.268:E/AndroidRuntime(8146):at android.app.ActivityThread.access $ 1900(ActivityThread.java:130)06 -12 22:43:22.268:E/AndroidRuntime(8146):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1292) 06-12 22:43:22.268:E/AndroidRuntime(8146) :at android.os.Handler.dispatchMessage(Handler.java:99)06-12 22:43:22.268:E/AndroidRuntime(8146):at android.os.Looper.loop(Looper.java:137) 06-12 22:43:22.268: E/AndroidRuntime(8146):at android.app.ActivityThread.main(ActivityThread.java:4745)06-12 22:43:22.268:E/AndroidRuntime (8146):at java.lang.reflect.Method.invokeNative(Native Method)06-12 22:43:22.268:E/AndroidRuntime(8146):at java.lang.reflect.Method.invoke(Method。 java:511)06-12 22:43:22.268: E/AndroidRuntime(8146):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) 06-12 22:43 :22.268:E/AndroidRuntime(8146):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)06-12 22:43:22.268:E/AndroidRuntime(8146):在 dalvik .system.NativeStart.main(Native Method)06-12 22:43:22.268: E/AndroidRuntime(8146):引起:java.lang.NullPointerException 06-12 22:43:22.268:E/AndroidRuntime(8146 ):在(ButtonSetupPanel.java:18) 06-12 22:43:22.268:E/AndroidRuntime(8146):at com.vektor.amapper.windows.MainWindow.createAndAttachView (MainWindow.java:86) 06-12 22:43:22.268:E/AndroidRuntime(8146):at wei.mark.standout.ui.Window。(Window.java:150)06-12 22:43 :22.268:E/AndroidRuntime(8146):at wei.mark.standout.StandOutWindow.show(StandOutWindow.java:1079)06-12 22:43:22.268:E/AndroidRuntime(8146):at wei.mark .standout.StandOutWindow.onStartCommand(StandOutWindow.java:382) 06-12 22:43:22.268:E/AndroidRuntime(8146):at com.vektor.amapper.windows.MainWindow.onStartCommand(MainWindow.java:150) 06-12 22:43:22.268:E/AndroidRuntime(8146):at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490) 06-12 22:43:22.268:E/AndroidRuntime(8146) ...10更
更新:我发现的问题是,由于这是LinearLayout
在另一个XML文件我需要充气其他布局文件,并显示所定义的视图(LinearLayout中)。如何进行?
UPDATE2:我用这个代码,以获得所需的查看
public ButtonSetupPanel(String btnName, int keyCode, View v){
AbsoluteLayout abs = (AbsoluteLayout) v.findViewById(R.id.mainbg);
LinearLayout view = (LinearLayout) LayoutInflater.from(v.getContext()).inflate(R.layout.btnsetup , null);
LinearLayout panel = (LinearLayout) view.findViewById(R.id.btnSetupPanel);
view.removeView(panel);
panel.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
panel.setX(512f);
panel.setY(300f);
panel.setOnTouchListener(this);
abs.addView(panel);
}
AbsoluteLayout被弃用API级别3 – Blackbelt
我需要使用它。 – Vektor88
什么告诉Logcat? –