我开始在Android中编码,但我的第一个吐司程序导致错误:Has Stopped Working
我已提交了我的代码,希望您能提供帮助。
public class MainActivity extends AppCompatActivity {
EditText edit;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn = (Button) findViewById(R.id.button1);
final EditText edit = (EditText) findViewById(R.id.editText1);
btn.setOnClickListener(myhandler1);
}
View.OnClickListener myhandler1 = new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(MainActivity.this,
edit.getText().toString(), Toast.LENGTH_LONG).show();
}
};
}
答案 0 :(得分:1)
在视图上分配onClickListener需要类的上下文(this / MainActivity.this / ....),如果您已经声明了视图,也不要使用final。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText edit;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
edit = (EditText) findViewById(R.id.editText1);
btn.setOnClickListener(MainActivity.this);
}
@Override
public void onClick(View v) {
// if view is your button
if(v == btn){
Toast.makeText(MainActivity.this,
edit.getText().toString(), Toast.LENGTH_LONG).show();
}
}
}
答案 1 :(得分:0)
确保btn不为null,添加以下代码行:
if(btn != null){
btn.setOnClickListener(myhandler1);
}
答案 2 :(得分:0)
是的,你得到NullPointerException
。为什么?请看下面的代码块:
// your global variable
EditText edit;
// your local variable
final EditText edit = (EditText) findViewById(R.id.editText1);
2 edittext
是2个不同的对象。因此,当您尝试使用之前未初始化的全局EditText
时,>你有错误只需删除本地变量中的final EditText
即可解决问题。
答案 3 :(得分:-1)
从代码中删除:
final Button
final EditText
答案 4 :(得分:-1)
由于您的全球参考,它无效。删除全局引用或者您可以这样做...
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText edit;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
edit = (EditText) findViewById(R.id.editText1);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,
edit.getText().toString(), Toast.LENGTH_LONG).show();
}
}
答案 5 :(得分:-1)
final Button btn = (Button) findViewById(R.id.button1);
final EditText edit = (EditText) findViewById(R.id.editText1);
这些代码行导致了问题,因为您已经定义了变量btn和edit,因此无需再次定义它们。您可以使用以下内容替换上述行。
btn = (Button) findViewById(R.id.button1);
edit = (EditText) findViewById(R.id.editText1);
这应该可以解决您的问题。如果没有,请告诉我们。