Android setContentView导致NullPointerException
我/我有一个NullPointerException,我相信问题与onCreate方法中的setContentView有关 以下是主要活动:Android setContentView导致NullPointerException,android,android-layout,setcontentview,Android,Android Layout,Setcontentview,我/我有一个NullPointerException,我相信问题与onCreate方法中的setContentView有关 以下是主要活动: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } 这是我在文本视图中添加文本的代码。。此代码是
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
这是我在文本视图中添加文本的代码。。此代码是在另一个视图中编写的:
public boolean onTouchEvent(MotionEvent event) {
// get pointer index from the event object
int pointerIndex = event.getActionIndex();
// get pointer ID
int pointerId = event.getPointerId(pointerIndex);
// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN: {
// We have a new pointer. Lets add it to the list of pointers
PointF f = new PointF();
f.x = event.getX(pointerIndex);
f.y = event.getY(pointerIndex);
mActivePointers.put(pointerId, f);
break;
}
case MotionEvent.ACTION_MOVE: { // a pointer was moved
for (int size = event.getPointerCount(), i = 0; i < size; i++) {
PointF point = mActivePointers.get(event.getPointerId(i));
if (point != null) {
point.x = event.getX(i);
point.y = event.getY(i);
}
}
break;
}
case MotionEvent.ACTION_UP:
String schema = getLetterSchema();
String letter = getLetter(schema);
if(letter == null) {
System.out.println("***************************");
System.out.println("****ERROR***"+schema+"***");
System.out.println("***************************");
} else {
TextView t=(TextView)findViewById(R.id.textView);
t.setText(letter);
System.out.println("***************************");
System.out.println("*"+letter+"*");
System.out.println("****************"+schema+"****");
}
mActivePointers.clear();
break;
case MotionEvent.ACTION_POINTER_UP:
// DO NOT USE
break;
case MotionEvent.ACTION_CANCEL: {
// DO NOT USE
mActivePointers.clear();
break;
}
}
;
invalidate();
return true;
}
第127行是这样的:t.setText(字母)代码>
以下是主要活动:
public class MainActivity extends Activity
{
@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;
}
}
你的假设是错误的。它与setContentView()
无关,而是与您的findViewById
调用有关。您声明代码来自另一个视图,这意味着您的代码位于扩展视图的类中。但是View
本身也有一个findViewById()
方法。在文件下面
查找具有给定id的子视图。如果此视图具有给定id,则返回此视图。
参数:
id要搜索的id。
返回:
层次结构中具有给定id或null的视图
我猜你的R.id.textView
不是你另一个视图的孩子
您想在上下文上调用findViewById()
,例如通过调用getContext().findViewById(R.id.textView)
。希望这能有所帮助。您需要发布stacktrace,以便我们可以看到错误所在。为什么您认为setContentView是错误的?您可以发布日志猫错误吗?您确定布局文件夹中有名为activity_main.xml的xml吗?我发布了日志猫,请看一看,是的,我确定它的名称为activity_main.xml
public class MainActivity extends Activity
{
@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;
}
}