2014-02-19 159 views
1

我嘗試了兩種不同的方式來設置ImageButton的事件,但都沒有奏效。一旦該按鈕被點擊ImageButton點擊不起作用

private void infoButtonClick() 
    { 
     Console.Write("Clicked"); 
    } 

應用崩潰:首先,我試圖在axml文件中添加的onClick:

<ImageButton 
    android:src="@drawable/homeInfoButtonImages" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/homeInfoButton" 
    android:layout_marginLeft="200dp" 
    android:layout_marginTop="600dp" 
    android:background="@null" 
    android:onClick="infoButtonClick" /> 

在Activity.cs。

第二種方法我試過Activity.cs:

protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Home); 

     // Create your application here 
     ImageButton button = FindViewById<ImageButton>(Resource.Id.homeInfoButton); 

     button.Click += delegate 
     { 
      infoButtonClick(); 
     }; 
    } 

    private void infoButtonClick() 
    { 
     Console.Write("Clicked"); 
    } 

什麼也沒有發生按鈕被點擊時...

什麼可能會造成這個問題?

+0

你可以發佈崩潰的logcat輸出嗎?我懷疑你沒有添加[Java.Interop.Export(「infoButtonClick」)]作爲你的infoButtonClick方法的一個屬性。 看到這個相似的答案由我:http://stackoverflow.com/questions/20197848/xamarin-android-how-to-capture-button-events-defined-in-the-onclick-xml-attribu – matthewrdev

回答

1

請刪除Console.Write("Clicked");並測試。

2

在從對XML onclick屬性調用的方法,你必須通過視圖的參數,它必須是公開的:

public void infoButtonClick(View v) 
{ 
    Console.Write("Clicked"); 
} 

正如你可以閱讀here

0

我在eclipse.I中使用java的代碼有同樣的問題。所以我不知道它是否適合你。

嘗試public void infoButtonClick()而不是私有。

此解決方案適用於我。認爲它可能有幫助。

0

Console.WriteLine可能會有一些意外的行爲(至少是我所經歷的)。下面的代碼適合我。

 FindViewById<ImageButton> (Resource.Id.imageButton1).Click += (s, e) => 
      Log.Info (s.ToString(), "Image button clicked!");