当按下按钮时,应用崩溃

时间:2018-10-30 07:20:40

标签: android

我正在尝试运行一个应用程序,当我尝试点击该按钮时,该应用程序在应保存数据以供备份时崩溃

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,但是当我再次在手机上运行它时,它什么也没做,并且当按钮被按下时,运行甚至都没有响应按下

4 个答案:

答案 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 中添加属性