我正在尝试运行一个应用程序,当我尝试点击该按钮时,该应用程序在应保存数据以供备份时崩溃
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.back4app.userregistrationexample, PID: 31963
java.lang.IllegalStateException: Could not find method onclick(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'btn_addbalance'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:423)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:380)
at android.view.View.performClick(View.java:6329)
at android.view.View$PerformClick.run(View.java:25002)
at android.os.Handler.handleCallback(Handler.java:809)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7555)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)
I/Process: Sending signal. PID: 31963 SIG: 9
Application terminated.
在这里,我只放置了我认为需要的代码,但是如果需要整个类,我也将对其进行编辑
余额
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app_bar_balance);
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
.clientKey("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
.server("https://parseapi.back4app.com/").build()
);
LiveQueryClient.init("wss://" + "aaaa.back4app.io", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", true); // Example: 'wss://livequerytutorial.back4app.io'
LiveQueryClient.connect();
Balance = (EditText) findViewById(R.id.txt_editbalance);
final Button addbalance = findViewById(R.id.btn_addbalance);
addbalance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Validating the log in data
boolean validationError = false;
StringBuilder validationErrorMessage = new StringBuilder("Please, insert ");
if (isEmpty(Balance)) {
validationError = true;
validationErrorMessage.append("an balance");
}
validationErrorMessage.append(".");
if (validationError) {
Toast.makeText(Balance.this, validationErrorMessage.toString(), Toast.LENGTH_LONG).show();
return;
}
//Setting up a progress dialog
final ProgressDialog dlg = new ProgressDialog(Balance.this);
dlg.setTitle("Please, wait a moment.");
dlg.setMessage("Adding Load...");
dlg.show();
ParseUser balance = new ParseUser();
balance.setUsername(Balance.getText().toString());
balance.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
dlg.dismiss();
} else {
dlg.dismiss();
ParseUser.logOut();
Toast.makeText(Balance.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
});
}
我试图更改名称来回切换,希望它可以解决问题 应用栏余额
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/txt_currentbal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="59dp"
android:text="Current Balance" />
<TextView
android:id="@+id/txt_balance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="96dp"
android:text="android:id" />
<TextView
android:id="@+id/txt_addbal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="185dp"
android:text="Add Balance" />
<EditText
android:id="@+id/txt_editbalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="230dp"
android:ems="10"
android:hint="Add Balance"
android:inputType="number" />
<Button
android:id="@+id/btn_addbalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="177dp"
android:onClick="onclick"
android:text="Add Balance" />
</RelativeLayout>
现在我删除了android:onClick="onclick"
,现在看起来像this,但是当我再次在手机上运行它时,它什么也没做,并且当按钮被按下时,运行甚至都没有响应按下
答案 0 :(得分:1)
您已经从代码中设置了ClickListener
。因此不需要按钮onClick
属性。
只需从Button中删除此行即可。
android:onClick="onclick"
它看起来像这样
<Button
android:id="@+id/btn_addbalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="177dp"
android:text="Add Balance" />
这将解决您的问题。
答案 1 :(得分:0)
在XML中,使用支持库中的按钮(widget.AppCompatButton),但在代码中,您尝试将其转换为常规Button。在XML代码中使用常规Button,或者在Java代码中使用AppCompatButton。
看到您正在使用支持库(正在使用AppCompatActivity),建议您在Java代码中将“按钮”更改为“ AppCompatButton”。
答案 2 :(得分:0)
在XML的按钮视图中放入onclick()方法
答案 3 :(得分:0)
如果您想在XML onClick中使用,请像这样使用:
<Button
android:id="@+id/btn_addbalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="177dp"
android:onClick="onClick"
android:text="Add Balance" />
您输入的格式错误
执行此操作:"onClick"
代替:"onclick
”
您可以签入logcat,它也显示了相同的内容,因此请更改它:
无法在ID为'btn_addbalance'的视图类android.support.v7.widget.AppCompatButton上定义的 android:onClick 属性的父级或祖先上下文中找到方法onclick(View)
如果您在 java
中进行操作,则无需在 xml 中添加属性