2017-03-31 4 views
1

Ich habe begonnen, diese Woche Code zu programmieren. Ich habe Tutorials über das Hinzufügen von Ereignissen zum Google Kalender verfolgt, wie ich auf ein Problem gestoßen bin, dass ich die Methode nicht finden konnte. Der Fehler ist:Methode für Android onClick-Ereignis konnte nicht gefunden werden

nicht Methode finden kann onAddEventClicked (View) in einem Elternteil oder einen Vorfahren Kontext für Android: onClick-Attribut definiert auf Ansichtsklasse android.support.v7.widget.AppCompatButton mit id 'addEventButton'

Dies ist mein Code:

package com.example.user.plannerv2; 

import android.support.v7.app.AppCompatActivity; 
import android.content.Intent; 
import android.provider.CalendarContract; 
import android.os.Bundle; 
import java.util.Calendar; 
import android.provider.CalendarContract.Events; 
import android.view.View; 

public class sub_page01 extends AppCompatActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_sub_page01); 
    } 

    public void onAddEventClicked(View view) { 
     Intent intent = new Intent(Intent.ACTION_INSERT); 
     intent.setType("vnd.android.cursor.item/event"); 

     Calendar cal = Calendar.getInstance(); 
     long startTime = cal.getTimeInMillis(); 
     long endTime = cal.getTimeInMillis() + 60 * 60 * 1000; 

     intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startTime); 
     intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,endTime); 
     intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true); 

     intent.putExtra(Events.TITLE, "Customer Cabin"); 
     intent.putExtra(Events.DESCRIPTION, "Cabin is leased out"); 
     intent.putExtra(Events.EVENT_LOCATION, "Cabin"); 

     startActivity(intent); 
    } 
} 

Hier ist meine XML;

<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"> 

    <Button 
     android:id="@+id/addEventButton" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="onAddEventClicked" 
     android:text="Add Event" /> 
</RelativeLayout> 

Dies ist der Fehler Ich erhalte:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.user.plannerv2, PID: 16127 
        java.lang.IllegalStateException: Could not find method onAddEventClicked(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'addEventButton' 
         at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
         at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
         at android.view.View.performClick(View.java:6207) 
         at android.widget.TextView.performClick(TextView.java:11094) 
         at android.view.View$PerformClick.run(View.java:23639) 
         at android.os.Handler.handleCallback(Handler.java:751) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6688) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

Wie ich gesagt habe, ich bin nicht 100% sicher, wie ich das Verfahren das Gefühl genannt wird. Jede Hilfe wäre großartig.

+2

Sie haben geladen 'R.layout.fragment_sub_page01' in eine andere Klasse ... Abgesehen davon, warum Sie ein Laden sind * * Fragment ** Layout in eine Aktivität? Versuchen Sie, Ihre Ressourcen besser zu benennen –

Antwort

0

Machen Sie es wie dieser

findViewById(R.id.addEventButton).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Perform your action here 
    } 
}); 

Sie fertig sind :)

+1

Dies ist eine Java-Frage, nicht Xamarin –

+1

@ cricket_007 Sie sind sehr schnell down Abstimmung :) Wie auch immer erlauben Sie mir Antwort in Java hinzufügen :) – Geek

+1

Warum würden Sie es hinzufügen "so gut"? –

Verwandte Themen