2016-06-08 93 views
1

我有一個包含片段轉換幀佈局的活動。框架佈局正在加載一個片段,現在我想在幀佈局上設置點擊監聽器。但點擊偵聽器工作正常。OnClickListener監聽器在幀佈局上不起作用

這裏是包含片段

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context=".FragmentActivity" 
tools:showIn="@layout/app_bar_balance" 
android:id="@+id/layout"> 

<FrameLayout 
    android:name="com.dd.cotech.Fragments.HomeFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/fragmentWindow" 
    tools:layout="@layout/fragment_home" /> 

這裏的框架佈局佈局聽者編碼

findViewById(R.id.fragmentWindow).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(FragmentActivity.this, "I am click", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

任何幫助嗎?

+0

你能解釋更多關於你的問題嗎 –

+0

但是點擊偵聽器工作正常 - 那麼問題是什麼? –

+0

對於輸入錯誤感到抱歉.click監聽器根本無法正常工作。它不會捕獲單擊事件。 –

回答

0

我認爲你做錯了按鈕的聲明。

試試這個例子:

final Button button = (Button) findViewById(R.id.button_id); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 
+0

我不想在按鈕上設置偵聽器,但在框架佈局上。 –

+0

嗯,好吧,試試這個鏈接http://stackoverflow.com/questions/16977873/framelayout-click-event-is-not-firing是真的比你的問題 – Simpson

0

試試這樣說:

public class FragmentActivity implements LocationListener, OnTouchListener { 

    private FrameLayout mFrame; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     mFrame = (FrameLayout) findViewById(R.id.fragmentWindow); 
     mFrame.setOnTouchListener(this); 
    } 


    public boolean onTouch(View v, MotionEvent e) { 

     if(mFrame == v) { 

      Toast.makeText(FragmentActivity.this, "I am click", Toast.LENGTH_SHORT).show(); 

      return true; 
     } 

     return false; 
    } 
} 
+0

我試過這個,但沒有運氣。框架佈局不是觸摸事件 –

0

首先實現OnClickListener

public class Avtivity_Name extends Fragment implements View.OnClickListener { 

然後裏面OnCreateView getview像

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    final View rootview = inflater.inflate(R.layout.main, container, false); 
FrameLayout layout = (FrameLayout) rootview.findViewById(R.id.fragmentWindow); 
    layout.setOnClickListener(this); 
    return rootview; 
} 

,創造出onClick側onCreateView

public void onClick(View v) { 
Toast.makeText(FragmentActivity.this, "I am click listner", Toast.LENGTH_SHORT).show(); 
} 
0

添加clickable屬性是這樣的:

<FrameLayout 
    android:name="com.dd.cotech.Fragments.HomeFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/fragmentWindow" 
    tools:layout="@layout/fragment_home" 
    android:clickable="false" /> 
+0

它有任何意義嗎?我的意思是我希望我的框架佈局是可點擊的,並且您推薦使其可點擊爲假? –

+0

只要根據您的需求進行判斷即可 –

0

中的FrameLayout標籤添加android:clickable="true"

如果它不工作,一旦嘗試fragment_home XML

希望這將幫助你的基地佈局標籤這行代碼。