0

Android 2.1 に基づくアプリケーションを開発しています。アプリケーションの 1 つのページに、numberpicker が必要です。Android 2.1 には numberpicker コントロールが含まれていないことがわかっているので、それを記述します。

Android 2.1 の numberpicker のバージョンを表示する必要がありますが、Android 4.0 の ICS スタイルの numberpicker は、その目的を達成するためにリフレクションを使用しました。コード内で現在の Build.VERSION.SDK_INT >= 14 を検出した場合、反映しますターゲット プラットフォームの numberpicker を取得し、現在のビューに動的に追加します。

私の質問は、Android 4.0 プラットフォームでアプリケーションを実行するときに numberpicker を反映できるということですが、numberpicker スタイルが ICS スタイルに見えません。なぜですか?

前もって感謝します!

4

1 に答える 1

2

忍耐があれば、おそらくNumberPicker クラスをバックポートできます。それはさておき、なぜリフレクションを使用するのでしょうか。ターゲット API を 15 に設定した場合、必要なのはこれだけです。フォルダーで、代替番号ピッカーlayoutを宣言します。In ( API 11 Honeycomb 以降で利用可能) で宣言します。それぞれに同じ ID を付与し、アクティビティに次の行に沿ったものを用意します。layout-v11NumberPickerandroid.widget.NumberPicker

private NumberPicker mNumPicker;
private SomeView mOldNumPicker;

public void onCreate(...) {
    // Use NumberPicker
    if (android.os.Build.VERSION.SDK_INT >= 11) {
        mNumPicker = findViewById(R.id.numpicker);
    } else {
        mOldNumPicker = findViewById(R.id.numpicker);
    }
}

これはリフレクションを必要とせず、存在しない API へのアクセスが原因でクラッシュすることはありません。ここから先は、それに基づいて呼び出すメソッドを確認if (mNumPicker == null)して決定するだけです。Buttons と EditText を使用しif (mOldNumPicker == null)た Number Picker の例もあります。

于 2012-06-07T13:34:45.557 に答える