如何在Android Studio中获取用户输入
如何接受用户输入并另存为变量?我已经一步一步地遵循了教程,但每次我尝试运行程序时,它都会关闭模拟器中的应用程序 我已经看了很多遍教程,所有的东西都很匹配 Logcat指出,问题在于onClick侦听器在android.app.ActivityThread.performLaunchActivity处返回一个空对象引用,但是代码看起来很好如何在Android Studio中获取用户输入,android,input,Android,Input,如何接受用户输入并另存为变量?我已经一步一步地遵循了教程,但每次我尝试运行程序时,它都会关闭模拟器中的应用程序 我已经看了很多遍教程,所有的东西都很匹配 Logcat指出,问题在于onClick侦听器在android.app.ActivityThread.performLaunchActivity处返回一个空对象引用,但是代码看起来很好 public class Macros extends AppCompatActivity { private Integer kilojoules;
public class Macros extends AppCompatActivity {
private Integer kilojoules;
private Integer carbohydrates;
private Integer protein;
private Integer fat;
EditText kilojoulesInput;
EditText carbohydratesInput;
EditText proteinInput;
EditText fatInput;
Button saveButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_macros);
kilojoulesInput = (EditText) findViewById(R.id.kilojoulesInput);
carbohydratesInput = (EditText) findViewById(R.id.carbohydratesInput);
proteinInput = (EditText) findViewById(R.id.proteinInput);
fatInput = (EditText) findViewById(R.id.fatInput);
saveButton = (Button) findViewById(R.id.save_button);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
kilojoules = Integer.valueOf(kilojoulesInput.getText().toString());
carbohydrates = Integer.valueOf(carbohydratesInput.getText().toString());
protein = Integer.valueOf(proteinInput.getText().toString());
fat = Integer.valueOf(fatInput.getText().toString());
}
});
}
private void showToast(String text){
Toast.makeText(Macros.this, text, Toast.LENGTH_SHORT).show();
}
public Macros(){
// No args constructor
}
public Macros(Integer kilojoules, Integer carbohydrates, Integer protein, Integer fat){
this.kilojoules = kilojoules;
this.carbohydrates = carbohydrates;
this.protein = protein;
this.fat = fat;
}
public Integer getKilojoules() {
return kilojoules;
}
public void setKilojoules(Integer kilojoules) {
this.kilojoules = kilojoules;
}
public Integer getCarbohydrates() {
return carbohydrates;
}
public void setCarbohydrates(Integer carbohydrates) {
this.carbohydrates = carbohydrates;
}
public Integer getProtein() {
return protein;
}
public void setProtein(Integer protein) {
this.protein = protein;
}
public Integer getFat() {
return fat;
}
public void setFat(Integer fat) {
this.fat = fat;
}
}
日志:
进程:com.example.myapplication,PID:26980
java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.myapplication/com.example.myapplication.Macros}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)'
位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6669)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)”
位于com.example.myapplication.Macros.onCreate(Macros.java:37)
位于android.app.Activity.performCreate(Activity.java:7136)
位于android.app.Activity.performCreate(Activity.java:7127)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6669)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)检查ID saveButton=(Button)findViewById(R.ID.save_Button),它可能为空,因为它没有接收到ID。请确保在布局xml文件中有带有ID save_按钮的按钮。现在,当我使用showtoos()时,应用程序可以不关闭为了查看它是否正确存储了值,它显示为null。原因可能是什么?您已经声明了
showtoos()
,但没有在任何地方调用它。另外,showtoos()
中的参数text
是什么?明白了!谢谢各位。