Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在简单的android应用程序上做错了什么?_Java_Android_Android Studio - Fatal编程技术网

Java 我在简单的android应用程序上做错了什么?

Java 我在简单的android应用程序上做错了什么?,java,android,android-studio,Java,Android,Android Studio,我试图使一个应用程序,有一个开关,一个按钮和一个文本,如果你打开开关,按下按钮;文本上显示的数字将加1。但如果开关关闭,数字将减去1。 但当我运行应用程序并按下按钮时,应用程序崩溃 我没有太多的编程经验,我不知道我做错了什么。我只试过这个代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super

我试图使一个应用程序,有一个开关,一个按钮和一个文本,如果你打开开关,按下按钮;文本上显示的数字将加1。但如果开关关闭,数字将减去1。 但当我运行应用程序并按下按钮时,应用程序崩溃

我没有太多的编程经验,我不知道我做错了什么。我只试过这个代码

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView text = (TextView)findViewById(R.id.textView);
    final Button button = (Button)findViewById(R.id.button);
    Switch mySwitch = (Switch)findViewById(R.id.mySwitch);

    mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked== true){

                    button.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            String text_string = text.getText().toString();
                            int text_int = Integer.parseInt(text_string);
                            text_int++;
                            text.setText(text_int);

                        }
                    });


                }

                if (isChecked == false) {

                    button.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            String text_string = text.getText().toString();
                            int text_int = Integer.parseInt(text_string);
                            text_int++;
                            text.setText(text_int);

                        }
                    });

                }
        }
    });
}
}


因此,这应该像我前面所描述的那样,但事实并非如此。

您不需要
开关的侦听器,但
按钮只需要一个侦听器:

final TextView text = (TextView)findViewById(R.id.textView);
final Button button = (Button)findViewById(R.id.button);
final Switch mySwitch = (Switch)findViewById(R.id.mySwitch);

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String text_string = text.getText().toString();
        int text_int = 0;
        try {
            text_int = Integer.parseInt(text_string);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        if (mySwitch.isChecked())
            text_int++;
        else
            text_int--;
        text.setText("" + text_int);
    }
});

每次单击
按钮
,在其侦听器中,
文本视图
中的值根据是否选中开关而增加或减少。

您正在嵌套侦听器,但该逻辑不按顺序工作。您应该单独声明侦听器。我建议您创建一个保存开关状态的布尔值和一个按钮侦听器。在侦听器中,检查开关是否已启用,然后运行计算,如果开关已禁用,则执行相同的操作

    button.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
       if(mySwitch.isChecked(){
           String text_string = text.getText().toString();
           int text_int = Integer.parseInt(text_string);
           text_int++;
           text.setText(String.valueOf(text_int));
        } else {
           String text_string = text.getText().toString();
           int text_int = Integer.parseInt(text_string);
           text_int++;
           text.setText(String.valueOf(text_int));
        }
      }
   });

你的应用程序崩溃是因为你试图将int设置为
textview.setText()
,当你将int传递给这个方法时,它希望它是一个资源id,在你的情况下找不到它,这就是为什么它会抛出
ResourceNotFoundException
并崩溃的原因

您应按以下方式设置文本:

text.setText(String.valueOf(text_int));

你能告诉我们错误是什么吗?欢迎来到StackOverFlow。请学习如何提问。请在你的问题中加入你的观点。