2015-10-17 18 views
3

我有以下佈局:浮動按鈕將不會提高OnClick事件

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:id="@+id/rlMap"> 
    <org.mapsforge.map.android.view.MapView 
     android:id="@+id/mapView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:clickable="true"/> 
    <ImageView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/windArrow" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentEnd="true" 
     android:layout_gravity="top|right|end" 
     android:src="@drawable/arrow" 
     android:layout_alignStart="@+id/fab" /> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right|end" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/settings" 
     android:clickable="true"/> 
</RelativeLayout> 

而且在OnCreate方法如下代碼:

... 
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d(TAG,"FAB Setting Clicked"); 
      Intent i = new Intent(getApplicationContext(), AppPreferences.class); 
      startActivity(i); 
     } 
    }); 
... 

但是,當我按下按鈕沒有反應,則意圖不會運行,並且日誌不會被寫入。

按鈕動畫的工作和我每次按出現以下日誌消息按鈕:

d/ViewRootImpl:ViewPostImeInputStage ACTION_DOWN

所以似乎有一些反應。

我在做什麼錯?

+1

你在哪裏設置點擊監聽器?在「活動」或「片段」內?你可以驗證監聽器是否設置爲按鈕?您可以在'fab.setOnClickListener'之前/之後調試或打印日誌。 – LordRaydenMK

+0

偵聽器正在被設置在最終從Activity派生的類中。監聽器正在設置中,我在前後使用fab.hasOnClickListeners()的日誌調試進行了檢查。 – CaptainNemo

+1

您可以在xml中添加一個點擊事件,例如 - (android:onClick =「runThis」) - 然後在Activity add - (public void runThis(View v){.....}).Try這種方式,看看它是否有效 – Tasos

回答

1

通過@Tasos提出的解決方案工作:

添加一個點擊事件的XML如內部

android:onClick="runThis" 

,然後在活動添加

public void runThis(View v) { ..... } 
+1

同樣的問題在這裏,我也對它爲什麼不工作感興趣。 – Zackline

+1

在我的情況下沒有工作! –

0

我經歷時,同樣的問題我沒有返回View對象,而是再次調用infalter.inflate,如下所示:

View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
/* setup onClick handler */ 
return inflater.inflate(R.layout.fragment_main, container, false); 

的修復與

return rootView; 
3

替換回報試試這個:

fab.bringToFront(); 

應該有所幫助。

0

我居然發現了以下解決方案來處理而流失點擊

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{ 
    @Override 
     public void onClick(View v) { 
      Log.v(LOG_HEADER,"onClick");  
     } 
} 

public class SearchFragment extends Fragment 
{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     LinearLayout ll = (LinearLayout)inflater.inflate(R.layout.fragment_search, container, false); 
     ll.setOnClickListener((MainActivity)getActivity()); 
     return ll; 
    } 
}