2017-04-11 69 views
-1

我想從另一個片段「B」使用一個接口調用一個名爲「change_color()」的方法在我的一個片段「A」中,由父活動實現。當我嘗試將我的父活動強制轉換爲接口的實例時,我得到這個ClassCastException。Java.lang.ClassCastException:活動不能轉換到接口

這裏的片段 「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(); 
      } 

這裏的接口的代碼

interface attendance_to_history{ 
public void invoke();} 

下面是從我父母的活動代碼:

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

此外:瞭解Java命名約定。這應該讀取AttendanceToHistory而是... – GhostCat

回答

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

更換而不是onActivityCreate d

0

這裏是解決方案: 1-在保存片段B的活動中,使其成爲implements attendance_to_history並覆蓋活動內部的方法invoke

那麼你的代碼將正常工作。

相關問題