0

我正在编写一个指南针 android 应用程序现在我面临一个问题,我想在主 XML 文件中添加一个画布,并带有一个后退按钮,我设计用于让用户返回菜单

addview()尝试将画布指南针添加到 main.xml 但仍然出错,错误是“mainLayout.addView(compassView);”上的 NULLPOINTEREXCEPTION 在 MAIN.JAVA 代码处

这是我的代码

主.java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    compassView = new MyCompassView(this);
    setContentView(compassView);
    LinearLayout mainLayout = (LinearLayout)findViewById(R.id.compasslayout);
    LayoutParams imageViewLayoutParams = new LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    compassView.setLayoutParams(imageViewLayoutParams);

    mainLayout.addView(compassView);

我的CompassView.java

public class MyCompassView extends View {

  private Paint paint;
  private float position = 0;

  public MyCompassView(Context context) {
      super(context);

      init();
  }

  private void init() {
      paint = new Paint();
      paint.setAntiAlias(true);
      paint.setTextSize(25);
      paint.setStyle(Paint.Style.STROKE);    
      paint.setColor(Color.BLACK);
      paint.setStrokeMiter(position);
  }

文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".Compass" >

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical" 
      android:paddingLeft="10dp"
      android:paddingTop="10dp"
      android:id="@+id/compasslayout">

      <Button
         android:id="@+id/buttona"
         android:layout_width="200dp"
         android:layout_height="50dp"
         android:background="@drawable/b_select" />

     </LinearLayout>

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      android:paddingLeft="10dp"
      android:paddingTop="10dp">

    </LinearLayout>
</LinearLayout>

请帮助我,我已经坚持了一天,如果没有完成这项任务我就无法继续

4

1 回答 1

1

问题在这里:

compassView = new MyCompassView(this);
setContentView(compassView);
LinearLayout mainLayout = (LinearLayout)findViewById(R.id.compasslayout);

您正在设置一个新MyCompassView的内容视图而不是您的 XML 文件。这意味着当你调用 时,找不到findViewById()id 的 View 。R.id.compasslayout你的电话setContentView()应该是setContentView(R.layout.mylayout)

于 2013-01-31T17:36:29.137 回答