2016-07-11 5 views
-1

Ich habe ein Fragment FragmentThree benannt, die View.OnTouchListener implementiert und es zeigt diese Show Fehler:Fragment Geräte zeigen Fehler „muss entweder abstarct deklariert werden oder implementieren abstarct Methode“

Class 'FragmentThree' must either be declared abstarct or implement abstarct method

package com.chrisrisner.fragmentsample; 

import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 


/** 
* A simple {@link Fragment} subclass. 
* Activities that contain this fragment must implement the 
* {@link FragmentThree.OnFragmentInteractionListener} interface 
* to handle interaction events. 
* Use the {@link FragmentThree#newInstance} factory method to 
* create an instance of this fragment. 
*/ 
public class FragmentThree extends Fragment implements View.OnTouchListener{ 
    // TODO: Rename parameter arguments, choose names that match 
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 
    private static final String ARG_PARAM1 = "param1"; 
    private static final String ARG_PARAM2 = "param2"; 

    // TODO: Rename and change types of parameters 
    private String mParam1; 
    private String mParam2; 

    private OnFragmentInteractionListener mListener; 

    /** 
    * Use this factory method to create a new instance of 
    * this fragment using the provided parameters. 
    * 
    * @param param1 Parameter 1. 
    * @param param2 Parameter 2. 
    * @return A new instance of fragment FragmentThree. 
    */ 
    // TODO: Rename and change types and number of parameters 
    public static FragmentThree newInstance(String param1, String param2) { 
     FragmentThree fragment = new FragmentThree(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public FragmentThree() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_fragment_three, container, false); 
    } 

    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      mListener = (OnFragmentInteractionListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p/> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     public void onFragmentInteraction(Uri uri); 
    } 

} 

Aber ich habe ein anderes Projekt, das haben ein Fragment RegistrationFragment wie dies ohne Fehler:

public class RegistrationFragment extends Fragment 
    implements View.OnTouchListener, EditText.OnEditorActionListener, APIResponse { 

Warum ich auf FragmentThree diesen Fehler haben?

+1

Noch eine extra Notiz. Bitte, um Ihrer selbst willen und um anderer Menschen willen, mit denen Sie arbeiten werden: Geben Sie Ihren Klassen, Methoden und Variablen aussagekräftige Namen. Zum Beispiel gibt 'private String mParam1;' mir keinen einzigen Hinweis, wofür diese Variable verantwortlich ist! –

Antwort

0

Gerade diese Methode Ihrer Klasse hinzufügen:

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    return false; 
} 

In der Tat ist die Frage kaum verständlich, stellen Sie sicher, beim nächsten Mal zumindest einige Code zu schreiben, für uns besser zu verstehen, was ist das Problem

+0

Danke für die Antwort, ich habe den Code mit Frage hinzugefügt. bitte guck dir das an. – Harunduet

+0

@Harunduet Ich sehe den Code. Was passiert ist, dass Sie angegeben haben, dass Ihre Klasse die 'View.OnTouchListener'-Schnittstelle implementiert, die Sie dazu zwang,' onTouch (View v, MotionEvent event) '-Methode zu implementieren, ohne diese Methode tatsächlich zu implementieren. Also, fügen Sie einfach mein Stück Code zu Ihrer Klasse und Sie sollten Feuer sein –

+1

Vielen Dank ... Problem gelöst nach dem Hinzufügen Ihrer vorgeschlagenen Methode. – Harunduet

Verwandte Themen