findViewbyid()出现空指针
我想在MyView类里面给MainActivity里面的textview赋值
public class MyView extends View {
TextView txtview;
//LinearLayout linear1;
ListView listv; public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
txtview=(TextView)findViewById(R.id.text1);
if(txtview==null)
System.out.println("txtview is null");
// linear1=(LinearLayout)findViewById(R.id.linear1);
listv=(ListView)findViewById(R.id.listview1);
if(listv==null)
System.out.println("listv is null");
//logcat里面显示txtview和listv均为空 }
@SuppressLint("DrawAllocation")
@SuppressWarnings("static-access")
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(0x00FFFFFF);
Paint bmpPaint=new Paint();
canvas.drawBitmap(cacheBitmap, 0, 0, bmpPaint);
//canvas.drawPath(path, bmpPaint);
canvas.save(canvas.ALL_SAVE_FLAG);
canvas.restore();
}
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
@Override
public boolean onTouchEvent(MotionEvent event) {
int x=(int)event.getX();
int y=(int)event.getY();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
flag=true;
startX=x;
startY=y;
loc.clear();
path.moveTo(x,y);
break;
case MotionEvent.ACTION_MOVE:
if(flag)
{
path.moveTo(x,y);
path.lineTo(x,y);
cacheCanvas.drawLine(startX,startY,x,y,paint);
startX=x;
startY=y;
loc.add(new Point(startX,startY));
}
break;
case MotionEvent.ACTION_UP:
path.reset();
bhnum++;
pic=new int[this.view_height][this.view_width];
for(int i=0;i<pic.length;i++)
for(int j=0;j<pic[i].length;j++)
pic[i][j]=0;
flag=false;
for(int i=0;i<loc.size();i++)
{
Point st=(Point)loc.get(i);
if(st.x>=this.view_width|| st.x<0|| st.y>=this.view_height||st.y<0)
{
continue;
}
int sty=st.y;
int stx=st.x;
pic[sty][stx]=1;
pics[sty][stx]=1;
}
ArrayList aa=new ArrayList();
aa=ljshibie();
Log.i("after ljshibie",aa.toString());
ArrayList bb=new ArrayList();Log.i("afterbb","can excute!");
bb=tjshibie();
Log.i("after tjshibie",bb.toString());
ccs=PutResult(aa,bb);
if( ccs !=null &&ccs.size()>0)
{
CharSequence cs=(String)ccs.get(0);Log.i("匹配字1",cs.toString());
txtview.setText(cs);//给textview赋值 Log.i("匹配字2",cs.toString());
...... }
break;
}
invalidate();
return true;
}
}