2016-11-17 10 views
0
のボタンにアクセスする方法

私は、このように環境設定でボタンを作成しPreferenceActivity

 View footerView = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.pref_reset_bd_button, null, false); 
     resetButton= (Button) footerView.findViewById(R.id.resetButton); 

ボタンのテキストを変更しようとしたとき

resetButton.setText("NEW ONE"); 

(または無効にする)何も起こっていません。私は間違って何をしていますか?

+0

画面が表示される前に、画面を更新する必要があります。頭から申し訳ありません私は現時点でどのように分かりません。 – greenapps

+1

if条件の下にsetTextを置いていますか? – garima

+0

アンドロイドスタジオデバッガでボタンが新しいテキストを取得してもエミュレータで更新されない –

答えて

0

これを試してください。カスタム設定を作成します。

public class PreferenceWidget extends Preference { 
    private View mView; 

    @Override 
    protected void onBindView(View view) { 
     super.onBindView(view); 
     mView = view.findViewById(R.id.resetButton); 
    } 

    public View getView() { 
     return mView; 
    } 
} 

その後、あなたの好みのXMLビューを取得する

PreferenceWidget p = (PreferenceWidget)findPreference("resetBD"); 
Button b = (Button)p.getView(); 
b.setText("Hello"); 

そして、オリジナルの答え

<PreferenceScreen> 
    <package.PreferenceWidget 
    android:key="resetBD" 
    android:title="@string/ajustes_almacenamiento" 
    android:summary="@string/ajustes_almacenamiento_desc" 
    android:widgetLayout="@layout/pref_reset_bd_button" > 
    </package.PreferenceWidget > 
</PreferenceScreen> 

を変更する:あなたが持っているべきではない

を自分自身でビューを膨張させます。これはaddPreferencesFromResourceの呼び出しで発生します。

次に、プリファレンスを取得し、プリファレンスのビューを取得し、ボタンのビューを見つけてテキストを設定します。カスタムプリファレンスオブジェクトを作成する必要がありPreference.getView機能を使用する方法no one seems to know以来

Preference p = findPreference("resetBD"); 
View v = p.getView(null, null); 
Button b = (Button)v.findViewById(R.id.resetButton); 
v.setText("Hello"); 

が、。

+0

アンドロイドスタジオデバッガでボタンを取得して新しいテキストを正常に設定しましたが、エミュレータのボタンテキストは変更されません。 –

+0

デバイスでテストを試しましたか? – Mike

+0

はい、変更されません。私は例えば、嗜好のタイトルを変更できますが、widgetLayoutの内容は変更できません –

関連する問題