我正在学习制作android应用程序,所以请帮助我。我正在制作一些应用程序来学习触摸输入。所以我决定从获取触摸位置开始。
我做了这个应用程序
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "in.manas.anurag.firstapp.MESSAGE";
final TextView textView = (TextView)findViewById(R.id.textView);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View touchView = findViewById(R.id.touchView);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
textView.setText("Touch coordinates : " +
String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
return true;
}
@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;
}
}
当我使用模拟器运行这个应用程序时,它崩溃了。然而,应用程序中的一个小变化(即从类中删除“final TextView textView = (TextView)findViewById(R.id.textView);”并将其作为函数 onTouch 的一部分使应用程序工作)
有人可以解释为什么第一个代码不起作用吗?
谢谢你。
-- 正确代码:
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "in.manas.anurag.firstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View touchView = findViewById(R.id.touchView);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
final TextView textView = (TextView)findViewById(R.id.textView);
textView.setText("Touch coordinates : " +
String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
return true;
}
@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;
}
}