Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 OnClick侦听器功能不正常_Java_Android_Onclicklistener - Fatal编程技术网

Java OnClick侦听器功能不正常

Java OnClick侦听器功能不正常,java,android,onclicklistener,Java,Android,Onclicklistener,我有一个按钮,可以将活动中的所有文本值设置为null。然而,OnClickListener似乎并不像我想象的那样工作 问题是否与我将文本设置为按钮后的Prefs键有关?我对这个错误已经研究了一段时间,似乎无法独自解决它 代码如下: package com.mikitz.rogsimple; import android.app.Activity; import android.content.Context; import android.content.Intent; import andr

我有一个按钮,可以将活动中的所有文本值设置为null。然而,OnClickListener似乎并不像我想象的那样工作

问题是否与我将文本设置为按钮后的Prefs键有关?我对这个错误已经研究了一段时间,似乎无法独自解决它

代码如下:

package com.mikitz.rogsimple;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class DamageChest extends Activity {

EditText chestdmg1, chestdmg2, chestdmg3, chestdmg4, chestdmg5, chestdmg6, chestdmg7, chestdmg8, chestdmg9, chestdmg10; 
Button heal;    

SharedPreferences pref;

String getChestDMG1, getChestDMG2, getChestDMG3, getChestDMG4, getChestDMG5, getChestDMG6, getChestDMG7, getChestDMG8, getChestDMG9, getChestDMG10; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.damage_chest);
    pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);

    heal = (Button) findViewById(R.id.fullheal);

    chestdmg1 = (EditText) findViewById(R.id.dmg1);
    chestdmg2 = (EditText) findViewById(R.id.dmg2);
    chestdmg3 = (EditText) findViewById(R.id.dmg3);
    chestdmg4 = (EditText) findViewById(R.id.dmg4);
    chestdmg5 = (EditText) findViewById(R.id.dmg5);
    chestdmg6 = (EditText) findViewById(R.id.dmg6);
    chestdmg7 = (EditText) findViewById(R.id.dmg7);
    chestdmg8 = (EditText) findViewById(R.id.dmg8);
    chestdmg9 = (EditText) findViewById(R.id.dmg9);
    chestdmg10 = (EditText) findViewById(R.id.dmg10);

    getChestDMG1 = pref.getString("chestdmg1", "");
    getChestDMG2 = pref.getString("chestdmg2", "");
    getChestDMG3 = pref.getString("chestdmg3", "");
    getChestDMG4 = pref.getString("chestdmg4", "");
    getChestDMG5 = pref.getString("chestdmg5", "");
    getChestDMG6 = pref.getString("chestdmg6", "");
    getChestDMG7 = pref.getString("chestdmg7", "");
    getChestDMG8 = pref.getString("chestdmg8", "");
    getChestDMG9 = pref.getString("chestdmg9", "");
    getChestDMG10 = pref.getString("chestdmg10", "");

    final OnClickListener fullheal = new OnClickListener() {
            public void onClick(View v) {    
              SharedPreferences.Editor editor=pref.edit();
              editor.remove("chestdmg1");
              editor.remove("chestdmg2");
              editor.remove("chestdmg3");
              editor.remove("chestdmg4");
              editor.remove("chestdmg5");
              editor.remove("chestdmg6");
              editor.remove("chestdmg7");
              editor.remove("chestdmg8");
              editor.remove("chestdmg9");
              editor.remove("chestdmg10");
              editor.commit();                

              chestdmg1.setText("");
              chestdmg2.setText("");
              chestdmg3.setText("");
              chestdmg4.setText("");
              chestdmg5.setText("");
              chestdmg6.setText("");
              chestdmg7.setText("");
              chestdmg8.setText("");
              chestdmg9.setText("");
              chestdmg10.setText("");
            }
        };

    heal.setOnClickListener(fullheal); 

    chestdmg1.setText(getChestDMG1); 
    chestdmg2.setText(getChestDMG2); 
    chestdmg3.setText(getChestDMG3); 
    chestdmg4.setText(getChestDMG4); 
    chestdmg5.setText(getChestDMG5); 
    chestdmg6.setText(getChestDMG6); 
    chestdmg7.setText(getChestDMG7); 
    chestdmg8.setText(getChestDMG8); 
    chestdmg9.setText(getChestDMG9); 
    chestdmg10.setText(getChestDMG10); 



}

@Override
public void onBackPressed() 
{
    SharedPreferences.Editor editor=pref.edit();                    
        editor.putString("chestdmg1", chestdmg1.getText().toString());
        editor.putString("chestdmg2", chestdmg2.getText().toString());
        editor.putString("chestdmg3", chestdmg3.getText().toString());
        editor.putString("chestdmg4", chestdmg4.getText().toString());
        editor.putString("chestdmg5", chestdmg5.getText().toString());
        editor.putString("chestdmg6", chestdmg6.getText().toString());
        editor.putString("chestdmg7", chestdmg7.getText().toString());
        editor.putString("chestdmg8", chestdmg8.getText().toString());
        editor.putString("chestdmg9", chestdmg9.getText().toString());
        editor.putString("chestdmg10", chestdmg10.getText().toString());

        editor.commit();

        Toast.makeText(this, "GREAT SUCCESS!!!!", Toast.LENGTH_LONG).show();

        Intent intent = new Intent (this, DamageTracker.class);
        startActivity(intent); 
}
}将活动更改为

public class DamageChest extends Activity implements OnClickListener
然后将下面的代码放入类中

heal.setOnClickListener(this);
将onclick重写为类

@Override
public void onClick(View v) {
     switch (v.getId()) {
    case R.id.fullheal:
    // do your code here
    SharedPreferences.Editor editor=pref.edit();
          editor.remove("chestdmg1");
          editor.remove("chestdmg2");
          editor.remove("chestdmg3");
          editor.remove("chestdmg4");
          editor.remove("chestdmg5");
          editor.remove("chestdmg6");
          editor.remove("chestdmg7");
          editor.remove("chestdmg8");
          editor.remove("chestdmg9");
          editor.remove("chestdmg10");
          editor.commit();                

          chestdmg1.setText("");
          chestdmg2.setText("");
          chestdmg3.setText("");
          chestdmg4.setText("");
          chestdmg5.setText("");
          chestdmg6.setText("");
          chestdmg7.setText("");
          chestdmg8.setText("");
          chestdmg9.setText("");
          chestdmg10.setText("");
   break;
   default:

   break;
}

通过这种方式检查,并让我知道它是否不起作用

嗨,为什么不这样使用

heal.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            SharedPreferences.Editor editor=pref.edit();
          editor.putString("chestdmg1", "");
          editor.putString("chestdmg2", "");
          editor.putString("chestdmg3", "");
          editor.putString("chestdmg4", "");
          editor.putString("chestdmg5", "");
          editor.putString("chestdmg6", "");
          editor.putString("chestdmg7", "");
          editor.putString("chestdmg8", "");
          editor.putString("chestdmg9", "");
          editor.putString("chestdmg10", "");
          editor.commit();                

        }
    });
这很简单。如果您使用pref.edit,它看起来就像您在更新或保存模式。 让我们看看xml代码:

 <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClickbtn"
    android:text="Button2" />

您是否尝试调试代码?是否可以显示布局xml?尝试在onCreate方法之外编写onClickListener代码。实际运行不正常意味着什么?导致此错误:类型DamageChest必须实现继承的抽象方法View.onClickListener.OnClickView请删除您的onclick方法手动创建。然后转到您的类名并实现建议中给出的方法。结果导致此错误:此行有多个标记-标记上的语法错误;expected-void是令牌上的变量heal-Syntax错误的无效类型;此行应为过度治疗:公共无效治疗视图v{因为一旦我按下“上一步”按钮,取消了onClick方法,EditText就会被保存回Pref。我不知道你的意思是什么。你想用heal按钮保存首选项。然后单击“上一步”按钮,首选项就回来了,这就是你的意思?如果是这样,你必须尝试或在lauchMode上
public void onClickbtn(View v) {
    switch (v.getId()) {

    case R.id.button2:
        // put you code here
        break;

    default:
        break;
    }
   }