2012-08-02 26 views
0

你好我想在sherlockfragment中創建一個點擊監聽器,但每次點擊它時,它都會顯示「view.class source not found」,無論我做什麼動作我都想使用它開始的意圖更改活動在SherlockFragment中創建一個onclicklistener

這裏是我的代碼:

public class SafanTab extends SherlockFragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    return inflater.inflate(R.layout.safantab, container, false); 

} 

public void onOverClick(View view) { 
    Intent myIntent = new Intent(view.getContext(), OverSafan.class); 
    startActivityForResult(myIntent, 0); 
    } 


public void nProductenClick(View view) { 
    Intent myIntent = new Intent(view.getContext(), Over_Safan.class); 
    startActivityForResult(myIntent, 0); 
    } 


public void onTwitterClick(View view) { 
    Intent myIntent = new Intent(view.getContext(), Over_Safan.class); 
    startActivityForResult(myIntent, 0); 
    } 

} 

我定義了監聽器按鈕的佈局XML:

android:onClick="OnOverClick" 

我嘗試了很長的時間,一個也搜索了「View.class源找不到」,但找不到任何東西來解決我的問題。正如您在問題中看到的,我使用的是ActionBarSherlock。

+0

這僅僅是一個調試消息說Eclipse中不能找到View.class的源代碼(這是Android OS類的一部分)。通過在代碼中放置斷點並查看事件是否被正確捕獲,請嘗試在此之前找到問題。 – IncrediApp 2012-08-02 12:49:32

+0

對於devolping來說,我非常新鮮的是breakepoints「try&else」? – user1534326 2012-08-02 12:58:50

+0

根據你寫的內容,我假定你在調試模式下運行你的應用程序(你可以點擊調試圖標或調試爲 - > Android應用程序)。斷點是代碼中您想要停止並檢查對象當前狀態的地方。要在Eclipse中放置一個,只需點擊代碼行旁邊的左邊框 – IncrediApp 2012-08-02 13:07:26

回答

-1

不知道這是一個問題,但我看到你的方法的名稱定義:

public void onOverClick(View view) 

但在XML中指定:

android:onClick="OnOverClick" 

字母「O」在xml中大寫。

+0

android:onClick =「OnOverClick」 我只是鍵入,但thnx試圖幫助我 – user1534326 2012-08-02 13:16:35

2

您不會在片段中獲得onOverClick回調。在你的onActivityCreated()方法中使用類似下面的內容。

// Handle onclick 
    getView().findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      // do something 
     } 
    }); 

更多選項見這個問題:How to handle button clicks using the XML onClick within Fragments

編輯: 對於onCreateView你可以做到以下幾點:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.my_layout, container, false); 
    view.findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      // do something 
     } 
    }); 
    return view; 
    } 
+0

如果我把它放在「onCreateView」方法中我只是找不到源代碼,你可能會告訴哪裏可以把你的代碼放在我的代碼中?我覺得我現在很接近答案:) – user1534326 2012-08-02 13:23:57

+0

我把代碼放在onActivityCreated中。基本上任何時候調用onCreateView之後。我會更新我的答案。 http://developer.android.com/guide/components/fragments.html#Creating – Frohnzie 2012-08-02 13:28:39

+0

如果我把它放在我需要從onClick方法的地方});或者它會給我一個錯誤,當我調試這個它給沒有找到源 – user1534326 2012-08-02 13:37:41

相關問題