Java OnClick侦听器功能不正常
我有一个按钮,可以将活动中的所有文本值设置为null。然而,OnClickListener似乎并不像我想象的那样工作 问题是否与我将文本设置为按钮后的Prefs键有关?我对这个错误已经研究了一段时间,似乎无法独自解决它 代码如下: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
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;
}
}