2012-02-16 8 views
0

アクティビティに複数のボタンがあります。各ボタンは別のAlertDialogを開きます。アプリが起動し、マウスでボタンをクリックすると、クリックされたボタンにフォーカスが欲しいので、あとでDパッドボタンを操作することもできます。しかし、そうではなく、さらに悪いことに、フォーカスは時には永遠に失われます.D-Padボタンを使用してナビゲートすることはできません...Androidのアクティビティでクリックされたボタンに注目する

私はこれを明確にしたいと思いますactionItem.requestFocus(後に開かれAlertDialogが設定されているされていないのため..私はあまりにもダイアログ口コードをコメントによって確認されていない..しかし、運、私は次のようにそれを行うにしようとしています

public void buttonClicked(View actionItem){ 

    //Set focus on clicked button -- but this does not work 
    actionItem.requestFocus(); 

    switch(actionItem.getId()){ 
    case R.id.btnLogin: 
     //Show AlertDialog 1 
     break; 
    case R.id.btnInfo: 
     //Show AlertDialog 2 
     break; 
    case R.id.btnClose: 
     //Show AlertDialog 3 
     break; 
    } 
} 

私はクリックしたボタンにfoc AlertDialogが閉じられると、クリックされたボタンにフォーカスが移ります。

このbuttonClickedイベントは次のように..私はそれを設定し、複数のボタンに登録されている:

<Button 
    android:id="@+id/btnClose" 
    style="@style/button" 
    android:onClick="buttonClicked" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:drawableLeft="@drawable/close" 
    android:focusable="true" 
    android:text="Exit" /> 

<Button 
    android:id="@+id/btnInfo" 
    style="@style/button" 
    android:onClick="buttonClicked"     
    android:layout_marginRight="5dp" 
    android:layout_toLeftOf="@+id/btnClose" 
    android:layout_centerVertical="true" 
    android:drawableLeft="@drawable/information" 
    android:focusable="true" 
    android:text="About" /> 

buttonClicked機能は、各button'cクリックで呼び出されるが、そのボタンがフォーカスを取得しません。 ..

任意のアイデア?

答えて

0

メソッドの開始時にrequestFocus()を呼び出す代わりに、それぞれのケース内で呼び出すようにしてください。そうすれば、あなたが焦点を合わせた正しい要素が確実に得られるでしょう。

例:

switch(actionItem.getId()){ 
case R.id.btnLogin: 
actionItem.requestFocus() 
    break; 
} 

それは私の作品、私の最高の推測だこと。

幸運:)

+0

私はウルの方法を試してみましたが、それはうまくいかなかった – Aamir

関連する問題