2017-04-11 3 views
-1

Ich versuche, eine Methode namens "change_color()" in meinem einen Fragment "A" aus einem anderen Fragment "B" unter Verwendung einer Schnittstelle, implementiert von der übergeordneten Aktivität . Wenn ich versuche, meine übergeordnete Aktivität auf die Instanz meiner Schnittstelle zu übertragen, erhalte ich diese ClassCastException.Java.lang.ClassCastException: Aktivität kann nicht in Schnittstelle umgewandelt werden

Hier ist der Ausschnitt des Fragments "B",

Public class B extends Fragment implements View.onClickListener{ 
     public attendance_to_history var; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_attendance_take, 
    container, false); 
     return rootView; 
    } 

    public void onActivityCreated(Bundle savedInstanceState){ 
       super.onActivityCreated(savedInstanceState); 
       var = (attendance_to_history) getActivity(); 
      } 

Hier ist der Code der Schnittstelle

interface attendance_to_history{ 
public void invoke();} 

Hier ist Code aus meiner Eltern Aktivität:

public class tabbed_activity extends AppCompatActivity implements attendance_to_history{ 
    @Override 
    public void invoke() { 
     fragment_A frag = new fragment_A(); 
     frag.change_color(); 
    } 
} 
+0

Außerdem: Erfahren Sie mehr über Java-Namenskonventionen. Das sollte AttendanceToHistory stattdessen lesen ... – GhostCat

Antwort

0
attendance_to_history connector; 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    connector=(attendance_to_history) activity; 
} 

ersetzen stattdessen für onActivityCreate d

0

hier ist die Lösung: 1- in der Aktivität, die das Fragment B enthält, machen es implements attendance_to_history und überschreiben die Methode invoke Inneren der Aktivität.

dann funktioniert Ihr Code gut.

Verwandte Themen