Android setContentView导致NullPointerException

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); } 这是我在文本视图中添加文本的代码。。此代码是

我/我有一个NullPointerException,我相信问题与onCreate方法中的setContentView有关

以下是主要活动:

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;
    }

}