2015-12-20 62 views
1

我创建了一个新的活动有一个按钮,点击时提供了以下错误:onClick事件监听器不工作的活动

java.lang.IllegalStateException: Could not find method sendPasswordEmail(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.widget.Button with id 'sendPasswordEmailButton' 
at android.view.View$DeclaredOnClickListener.resolveMethod(View.java:4479) 
at android.view.View$DeclaredOnClickListener.onClick(View.java:4443) 
at android.view.View.performClick(View.java:5198) 
at android.view.View$PerformClick.run(View.java:21147) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

下面是活动XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:fitsSystemWindows="true" 
    android:background="@color/loginBackground" 
    android:orientation="vertical" 
    tools:context=".activities.ForgotPasswordActivity"> 


    <Button 
     android:layout_marginTop="@dimen/vetical_margin_medium" 
     android:layout_width="@dimen/centerButtonWidth" 
     android:layout_height="@dimen/centerButtonHeight" 
     android:background="@android:drawable/dialog_holo_dark_frame" 
     android:textColor="@color/inputColour" 
     android:text="Send" 
     android:id="@+id/sendPasswordEmailButton" 
     android:layout_gravity="center_horizontal" 
     android:onClick="sendPasswordEmail"/> 


</LinearLayout> 

这里是活动的Java代码:

public class ForgotPasswordActivity extends AppCompatActivity { 

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

    public void sendPasswordEmail() { 

     // do something 
     } 
    } 
} 

我以同样的方式实施的两个以前的活动都h大声按钮和关联的点击监听器,工作正常。

Compile Sdk Version: API 23: Android 6.0 (Marshmallow) 
Min Sdk Version: 16 
Target Sdk Version: 22 

这里是清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="crm.geoalertapp"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".activities.ForgotPasswordActivity" 
      android:label="@string/title_activity_forgot_password" 
      android:parentActivityName=".activities.LoginActivity" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value=".activities.LoginActivity" /> 
     </activity> 
    </application> 

</manifest> 

有人建议为何onClick事件侦听器未当前与此活动的工作?

回答

1

你需要改变:

public void sendPasswordEmail() { ... } 

public void sendPasswordEmail(View view) { 
    // Handle click on the button 
}