有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Basic 安卓调试

当我在Nexsus 4上启动应用程序时,我似乎已经迫不及待了。很可能只是我在胡闹,但我找不到代码有任何问题

Android Studio没有错误。注释掉的重置方法我应该重置复选框和文本视图

为什么我不能在onCreate之前定义项?当我在无法在“重置”方法中使用它们之后定义它们时

有人能看一下吗

package com.example.myapplication;
import 安卓.os.Bundle;
import 安卓.app.Activity;
import 安卓.view.Menu;
import 安卓.view.View;
import 安卓.widget.Button;
import 安卓.widget.CheckBox;
import 安卓.widget.EditText;
import 安卓.widget.TextView;
public class MainActivity extends Activity {

    final TextView txtTest = (TextView) findViewById(R.id.txtOut);
    final CheckBox chkTest = (CheckBox) findViewById(R.id.chkTest);
    final Button btnTest = (Button) findViewById(R.id.btnTest);
    final EditText etTest = (EditText) findViewById(R.id.etTest);
    String text = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            chkTest.setChecked(true);

            chkTest.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                            if (chkTest.isChecked()) {
                                    txtTest.setText("Checked :)");
                            } else txtTest.setText("Not Checked");
                    }
            });

            btnTest.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                            //etTest.getText().toString(text);
                            text = etTest.toString();
                      // Reset(text);
                    }
            });
            /*void Reset(String text) {
                    chkTest.setChecked(false);
                    txtTest.setText(text);
            }*/
    }

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

这是logcat错误:

java.lang.RuntimeException: Unable to instantiate activity
ComponentInfo{[...].MyActivity}: java.lang.NullPointerException

共 (3) 个答案

  1. # 1 楼答案

    您不能因为您正在初始化的项目位于activity_main.xml上,而您在初始化后设置了内容视图。在^{中进行初始化

  2. # 2 楼答案

    首先,必须在onCreate()之外定义Reset()函数。这不是正确的方法。 第二,我观察到你们刚刚开始这个,所以我建议在xml中定义views,然后对它们采取行动。您可以在xml中首先将checkbox设置为true,然后在代码中将后者设置为false

  3. # 3 楼答案

    您不能以这种方式初始化该项!当执行代码final TextView txtTest = (TextView) findViewById(R.id.txtOut);时,布局尚未膨胀,因此存在空指针异常。另外,在onCreate()之外定义reset()方法。 请参见下面的代码:

        TextView txtTest = null;
        CheckBox chkTest = null;
        Button btnTest = null;
        EditText etTest = null;
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        txtTest = (TextView) findViewById(R.id.txtOut);
        chkTest = (CheckBox) findViewById(R.id.chkTest);
        btnTest = (Button) findViewById(R.id.btnTest);
        etTest = (EditText) findViewById(R.id.etTest);
    
        ....
     }
    
    
     void reset(String text) {
          chkTest.setChecked(false);
          txtTest.setText(text);
     }