Android onClickListener在设置时导致崩溃
我有一个自定义视图,我想当我设置onclick侦听器时,我总是会崩溃Android onClickListener在设置时导致崩溃,android,view,crash,onclicklistener,Android,View,Crash,Onclicklistener,我有一个自定义视图,我想当我设置onclick侦听器时,我总是会崩溃 public class Holder extends View implements OnClickListener { Bitmap test; int row=1; int column=1; int x=0;int y=0; private Paint paint = new Paint(); int deltaX=5; int deltaY = 3; Canvas c; String [][] puzzleS;
public class Holder extends View implements OnClickListener {
Bitmap test;
int row=1; int column=1;
int x=0;int y=0;
private Paint paint = new Paint();
int deltaX=5; int deltaY = 3;
Canvas c;
String [][] puzzleS;
Button [] numbers;
int width, height;
String input;
/*public Holder(Context context)
{
super(context);
test=BitmapFactory.decodeResource(super.getResources(),R.drawable.smallball);
SudokuGenerator gen = new SudokuGenerator();
String puzzle= "........."+
"........."+
"........."+
"........."+
"........."+
"........."+
"........."+
"........."+
".........";
gen.init(puzzle);
gen.generate(3);
gen.outputPuzzle();
puzzleS = gen.getStrPuzzle();
}*/
public Holder(Context context, AttributeSet attrs)
{
super(context, attrs);
test=BitmapFactory.decodeResource(super.getResources(),R.drawable.smallball);
SudokuGenerator gen = new SudokuGenerator();
String puzzle= "........."+
"........."+
"........."+
"........."+
"........."+
"........."+
"........."+
"........."+
".........";
gen.init(puzzle);
String input="";
gen.generate(3);
gen.outputPuzzle();
puzzleS = gen.getStrPuzzle();
numbers= new Button[9];
numbers[0]=(Button) findViewById(R.id.button1); //numbers[0].setOnClickListener(this);
numbers[1]=(Button) findViewById(R.id.button2);
numbers[2]=(Button) findViewById(R.id.button3);
numbers[3]=(Button) findViewById(R.id.button4);
numbers[4]=(Button) findViewById(R.id.button5);
numbers[5]=(Button) findViewById(R.id.button6);
numbers[6]=(Button) findViewById(R.id.button7);
numbers[7]=(Button) findViewById(R.id.button8);
numbers[8]=(Button) findViewById(R.id.button9);
}
注释行号[0]。setOnClickListener(此);返回导致应用程序崩溃。不用说,我没有问题。我还尝试将侦听器放在一个单独的类中,并直接使用View.onClickListenr。。。这里也是主活动类和主布局XML
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
//Holder sweet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
您的持有者
没有任何按钮
子项,是您的活动
造成的。因此,如果您试图在支架中找到按钮
,则会导致findViewById
返回null
,从而发生崩溃。您的类不会扩展活动
您可以查找设置为“活动”的当前视图层次结构的DViewById。您的类不扩展活动,而是扩展视图
在本例中,findViewById返回null。您将获得NullPointerException
扩展活动
public class Holder extends Activity implements OnClickListener
然后重写onCreate
@Override.
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
// initialize buttons.
}
@Override.
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
// initialize buttons.
}