gpt4 book ai didi

Android编程添加ImageView

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:55 24 4
gpt4 key购买 nike

我刚开始学习 Android 编程。我创建了一个包含空白 Activity 的新项目 (API 19),并尝试添加一个 ImageView,如下所示:(在 MainActivity 的 onCreate() 中)

setContentView(R.layout.activity_main);
View view = (View) findViewById(R.layout.activity_main);
LinearLayout picLL = new LinearLayout(MainActivity.this);
picLL.layout(0, 0, 100, 100);
picLL.setLayoutParams(new LayoutParams(100, 100));
picLL.setOrientation(LinearLayout.HORIZONTAL);
((ViewGroup) view).addView(picLL); // <- This is line 36
ImageView myImage = new ImageView(this);
myImage.setImageResource(R.drawable.ic_launcher);
picLL.addView(myImage);

但是,应用程序在启动后立即崩溃。我已经尝试了来自 Stackoverflow 的许多其他答案,但没有一个奏效。我似乎缺少了什么......

这是 LogCat 输出:

04-17 10:02:35.611: E/AndroidRuntime(1402): FATAL EXCEPTION: main
04-17 10:02:35.611: E/AndroidRuntime(1402): Process: com.example.test, PID: 1402
04-17 10:02:35.611: E/AndroidRuntime(1402): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.NullPointerException
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.os.Handler.dispatchMessage(Handler.java:102)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.os.Looper.loop(Looper.java:136)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-17 10:02:35.611: E/AndroidRuntime(1402): at java.lang.reflect.Method.invokeNative(Native Method)
04-17 10:02:35.611: E/AndroidRuntime(1402): at java.lang.reflect.Method.invoke(Method.java:515)
04-17 10:02:35.611: E/AndroidRuntime(1402): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-17 10:02:35.611: E/AndroidRuntime(1402): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-17 10:02:35.611: E/AndroidRuntime(1402): at dalvik.system.NativeStart.main(Native Method)
04-17 10:02:35.611: E/AndroidRuntime(1402): Caused by: java.lang.NullPointerException
04-17 10:02:35.611: E/AndroidRuntime(1402): at com.example.test.MainActivity.onCreate(MainActivity.java:36)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.Activity.performCreate(Activity.java:5231)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-17 10:02:35.611: E/AndroidRuntime(1402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-17 10:02:35.611: E/AndroidRuntime(1402): ... 11 more
04-17 10:02:38.771: I/Process(1402): Sending signal. PID: 1402 SIG: 9

最佳答案

发生这种情况是因为您试图通过布局的 id 查找 View

View view = (View) findViewById(R.layout.activity_main); 

您有两个选择:您可以在 activity_main.xml 中为根元素添加任何 id。例如,它将是 root_layout_id。然后你可以找到它:

View view = (View) findViewById(R.id.root_layout_id); 

第二种选择是以编程方式创建布局。像这样更改您的 onCreate() 方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout picLL = new LinearLayout(this);
picLL.layout(0, 0, 100, 100);
picLL.setLayoutParams(new LayoutParams(100, 100));
picLL.setOrientation(LinearLayout.HORIZONTAL);
ImageView myImage = new ImageView(this);
myImage.setImageResource(R.drawable.ic_launcher);
picLL.addView(myImage);
setContentView(picLL);
}

关于Android编程添加ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23135563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com