gpt4 book ai didi

android - 为什么在添加线性布局 (Android) 时会出现空指针异常?

转载 作者:太空狗 更新时间:2023-10-29 15:48:25 26 4
gpt4 key购买 nike

我正在尝试使用类扩展 View 来添加 Canvas ,然后将其添加到屏幕底部某些按钮下方的线性布局。我知道我做的不对,但我不知道哪里出了问题。当我尝试添加线性布局时出现 nullpointerexception。有什么建议吗?

部分代码如下:

public class Vectors extends Activity{

VectorsView vectorsView;
LinearLayout l;

public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
vectorsView = new VectorsView(this);
l = (LinearLayout) findViewById(R.id.llCanvasV);
l.addView(vectorsView); //Line 50
setContentView(R.layout.vectors);
.......
}

public class VectorsView extends View{

public VectorsView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

Paint paint = new Paint();
paint.setColor(Color.WHITE);

canvas.drawLine(0, 0, 100, 100, paint);
vectorsView.draw(canvas);
vectorsView.setLayoutParams(new LayoutParams(25, 25));
}
}

这是 xml 的一部分:

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical">

<ImageView android:layout_height="wrap_content"
android:src="@drawable/vectors"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:adjustViewBounds="true">
</ImageView>
<LinearLayout android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal">
<Button android:text="Choose Program"
android:id="@+id/bChsProgV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="97dp"
android:adjustViewBounds="true">
</Button>
<ImageButton android:layout_height="wrap_content"
android:src="@drawable/help"
android:id="@+id/ibHelpV"
android:layout_width="wrap_content"
android:layout_marginLeft="65dp"
android:background="@null"
android:layout_marginTop="10dp">
</ImageButton>
</LinearLayout>
<LinearLayout android:id="@+id/llCanvasV"
android:layout_height="wrap_content"
android:layout_width="match_parent">
</LinearLayout>
</LinearLayout>

这是 logcat:

 04-12 07:47:22.009: ERROR/AndroidRuntime(15072): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.prattia.webs.cheaterphysics/com.prattia.webs.cheaterphysics.Vectors}: java.lang.NullPointerException
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.os.Looper.loop(Looper.java:123)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at java.lang.reflect.Method.invoke(Method.java:521)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at dalvik.system.NativeStart.main(Native Method)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): Caused by: java.lang.NullPointerException
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at com.prattia.webs.cheaterphysics.Vectors.onCreate(Vectors.java:50)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
04-12 07:47:22.009: ERROR/AndroidRuntime(15072): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

最佳答案

在调用findViewById之前需要先调用setContentView。见下文:

public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.vectors); //must be called before findViewById

vectorsView = new VectorsView(this);
l = (LinearLayout) findViewById(R.id.llCanvasV);
l.addView(vectorsView); //Line 50
}

关于android - 为什么在添加线性布局 (Android) 时会出现空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126153/

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