【问题标题】:java.lang.IllegalStateException: Could not find method btnSubmit(View) in a parent or ancestor Context for android:onClickjava.lang.IllegalStateException:在 android:onClick 的父或祖先上下文中找不到方法 btnSubmit(View)
【发布时间】:2017-03-18 04:34:57
【问题描述】:

这个 Java 接受编辑文本字段的输入并将它们输出到 Toast。

我不知道错误在哪里或是什么,任何帮助将不胜感激:

Java

package colonyapplication.colony;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class tenantReg extends Activity {

    EditText fullName = (EditText) findViewById(R.id.etFname);
    EditText userEmail = (EditText) findViewById(R.id.etEmail);
    EditText userPass = (EditText) findViewById(R.id.etPass);

    String fName = fullName.getText().toString();
    String uEmail = userEmail.getText().toString();
    String uPass = userPass.getText().toString();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tenant_reg);
    }

    public void btnSubmit() {

        String tenant = "Tenant";

        Toast.makeText(tenantReg.this, "UserName is: " + fName + ". Password is: " + uPass + "email is: " + uEmail + tenant, Toast.LENGTH_LONG).show();

    }

}

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#fcdfaa"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="colonyapplication.colony.tenantReg">


<ImageView
    android:id="@+id/imageView2"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:src="@drawable/colonylogo"
    android:layout_above="@+id/passTextBox"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="61dp" />

<EditText
    android:id="@+id/etFname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/imageView2"
    android:layout_alignStart="@+id/imageView2"
    android:layout_below="@+id/imageView2"
    android:ems="10"
    android:hint="Full Name"
    android:inputType="textPersonName" />

<EditText
    android:id="@+id/etEmail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/etFname"
    android:layout_alignStart="@+id/etFname"
    android:layout_centerVertical="true"
    android:ems="10"
    android:hint="Email"
    android:inputType="textEmailAddress" />

<EditText
    android:id="@+id/etPass"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="29dp"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPassword"
    android:layout_below="@+id/etEmail"
    android:layout_alignStart="@+id/etEmail"
    android:layout_alignEnd="@+id/etEmail" />

<EditText
    android:id="@+id/etPassconfirm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="34dp"
    android:ems="10"
    android:hint="Confirm Password"
    android:inputType="textPassword"
    android:layout_below="@+id/etPass"
    android:layout_alignStart="@+id/etPass"
    android:layout_alignEnd="@+id/etPass" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="32dp"
    android:layout_marginTop="47dp"
    android:background="#EE7600"
    android:onClick="btnSubmit"
    android:text="Submit"
    android:textAllCaps="false"
    android:textColor="#ffffff"
    android:textSize="17sp"
    android:layout_below="@+id/etPassconfirm"
    android:layout_alignStart="@+id/etPassconfirm" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cancel"
    android:background="#EE7600"
    android:textAllCaps="false"
    android:textColor="#ffffff"
    android:textSize="17sp"
    android:layout_alignBaseline="@+id/button"
    android:layout_alignBottom="@+id/button"
    android:layout_alignEnd="@+id/etPassconfirm"
    android:layout_marginEnd="33dp" />


</RelativeLayout>

无论出于何种原因,当单击提交按钮时,程序会在模拟器中停止。 Android 监视器中的错误指出:“java.lang.IllegalStateException:在父级或祖先上下文中找不到方法 btnSubmit(View) 为 android:onClick 属性定义在视图类 android.support.v7.widget.AppCompatButton 上,id 为 '按钮'"

【问题讨论】:

    标签: java android xml


    【解决方案1】:

    我看到你有 2 个按钮,但我不知道哪个是提交按钮。 好吧,我也找不到public void btnSubmit() 的含义。据我所知,您应该定义 tn submit:

    Button btnSubmit = (Button) findViewById(R.id.your_btnSubmit_id);
    

    然后在点击 btn 时使用 onClickListener 方法做某事

    btnsubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               //Do somthing
            }
        });
    

    编辑:

    你可以用你的代码替换

    public void btnSubmit()
    

    用这个:

    public void btnSubmit(View v)
    

    【讨论】:

    • btnSubmit 在 XML 中定义为 onClick。 "android:onClick="btnSubmit"" 所以简单的 public void btnSubmit(){} 工作正常。我已经这样做了几年了
    • 我确实不得不为邋遢的 XML 代码道歉,但由于 Android Studio 既是拖放又是硬代码,很容易变得懒惰
    • 好的,对不起。我没有看到,但我知道您应该在提交点击时使用(查看 v)。喜欢这个链接http://stackoverflow.com/a/4153842/7699710
    • 嗨,为回复喝彩,(视图 v)也不起作用,我认为代码中一定有一些非常无聊的东西!
    • 实际上,我尝试设置另一个按钮(取消)来执行此操作: public void btnCancel(View v){ setContentView(R.layout.activity_main_page); } 甚至抛出同样的错误
    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多