1

我想將一個ImageButton放在工具欄中,它的一個徽標,並配置它,以便用戶點擊它,它將它們帶到一個網站。工具欄中的ImageButton對Click事件沒有響應

我能夠在所有3個片段上正確顯示徽標,但如果我點擊徽標則沒有任何反應。

從activity_main的XML是什麼樣子:

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout 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:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/appbar_padding_top" 
    android:theme="@style/AppTheme"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/AppTheme"> 

     <ImageButton 
      android:id="@+id/logo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:src="@drawable/jclogo" 
      android:onClick="GoToLogo"/> 

    </android.support.v7.widget.Toolbar> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

然後在OnActivityCreated的片段我設置OnClickListener:

public void onActivityCreated(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onActivityCreated(savedInstanceState); 
    myLogo = (ImageButton) getActivity().findViewById(R.id.logo); 
    myLogo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Uri uri = Uri.parse("http://somewebsite.co.uk"); 
      Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
      startActivity(intent); 
     } 
    }); 
} 

我也實施和OnClick方法:

public void GoToLogo(View v) { 
    v.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Uri uri = Uri.parse("http://somewebsite.co.uk"); 
      Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
      startActivity(intent); 

     } 
    }); 
} 

但沒有任何反應。沒有任何標識被點擊。它沒有響應,因爲它在工具欄中?

非常感謝。

+0

佈局XML文件,過帳是從framgments或活動? –

+0

@Bruno,它是活動的xml – user3079872

+0

所以讓onclickListener裏面的活動創建方法。不片段OnActivityCreated方法。 –

回答

0

您必須在Activity中執行onClick方法GoToLogo,而不是Fragment

+0

謝謝。我也嘗試過,它仍然沒有做任何事情。 – user3079872

+0

您不應該在GoToLogo方法內再次設置onClickListener。刪除該監聽器,然後在單擊該按鈕之後編寫該做什麼。 – Bob

+0

是的,試過了,圖像上的點擊甚至沒有註冊。 – user3079872

0

現在嘗試註釋掉在onCreate()onClickListener,改變GoToLogo()方法這一點,看看是否能工程

public void GoToLogo(View v) { 
     Uri uri = Uri.parse("http://somewebsite.co.uk"); 
     Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
     startActivity(intent); 

    } 
+0

謝謝。它甚至沒有註冊點擊。 – user3079872

0

試試這個:

private ImageButton button; 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    View view = getView(); 
    button = (ImageButton) view.findViewById(R.id.buttonId); 
    button.setOnClickListener(new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      //code stuff 
     } 
    }); 
} 
+0

我已經有這個實現,並沒有點擊註冊。 – user3079872

+0

如果'ImageButton imageButton =(ImageButton)toolbar.findViewById(R.id.back);'可能有助於檢索視圖。 –

0

刪除您

android:onClick="GoToLogo" 

和GoToLogo方法,你不要您無需加倍定義onClick行爲的方式。

然後嘗試findView相應的,它更有意義在你的活動,而不是你的片段做..