如何在Android Studio中获取用户输入

如何在Android Studio中获取用户输入,android,input,Android,Input,如何接受用户输入并另存为变量?我已经一步一步地遵循了教程,但每次我尝试运行程序时,它都会关闭模拟器中的应用程序 我已经看了很多遍教程,所有的东西都很匹配 Logcat指出,问题在于onClick侦听器在android.app.ActivityThread.performLaunchActivity处返回一个空对象引用,但是代码看起来很好 public class Macros extends AppCompatActivity { private Integer kilojoules;

如何接受用户输入并另存为变量?我已经一步一步地遵循了教程,但每次我尝试运行程序时,它都会关闭模拟器中的应用程序

我已经看了很多遍教程,所有的东西都很匹配

Logcat指出,问题在于onClick侦听器在android.app.ActivityThread.performLaunchActivity处返回一个空对象引用,但是代码看起来很好

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
是什么?明白了!谢谢各位。