1

您好,我使用 AVD,但当我得到 -> 应用程序停止工作强制退出时,我不知道如何出错堆栈...

我想编写简单的侦听器,但出现错误-> 我知道错误是由 setOnClick 侦听器引起的,这很可能是空指针异常,但我想在堆栈错误中看到它。请告诉我为什么会有例外。我附上XML的一部分

package com.example.pierwsza;

 import android.os.Bundle;
 import android.app.Activity;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.support.v4.app.NavUtils;

class MainActivity extends Activity implements OnClickListener{
Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    b = (Button) findViewById(R.id.button3);
   // b.setOnClickListener((android.view.View.OnClickListener) this); <--- ERROR
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void onClick(DialogInterface dialog, int which) {
    //b.setText("Ale to dziwne");

}


}

该按钮的 XML

 <Button
    android:id="@+id/button3"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/linearLayout1"
    android:layout_marginBottom="29dp"
    android:layout_toLeftOf="@+id/textView1"
    android:text="Jakis przycisk" />
4

2 回答 2

2

采用

b = (Button) findViewById(R.id.button3);
b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        }
    }); 

代替

b = (Button) findViewById(R.id.button3);
b.setOnClickListener((android.view.View.OnClickListener) this); 

或者

b = (Button) findViewById(R.id.button3);
b.setOnClickListener((this); 

将您的方法更改为:

public void onClick(View view) {
    //b.setText("Ale to dziwne");
}

并且还进口

import android.view.View.OnClickListener;

代替

import android.content.DialogInterface.OnClickListener;
于 2012-07-01T18:39:00.873 回答
2

如果您使用 Eclipse 进行编码,请转到Window -> Show View -> LogCat以查看您的应用程序抛出的错误堆栈。

要修复此特定错误,请更改此:

public void onClick(DialogInterface dialog, int which) {
    //b.setText("Ale to dziwne");
}

要像这样使用 View.OnClickListener():

public void onClick(View view) {
    //b.setText("Ale to dziwne");
}

然后按Ctrl++将导入语句从 DialogInterface.OnClickListener 更新为 View.OnClickListener ShiftO

于 2012-07-01T18:41:30.607 回答