以下が基本的な問題だと思います。
Android SDK によって提供されるものがないため、この番号ピッカーを使用します: http://www.quietlycoding.com/?p=5&cpage=1#comment-10645
膨らんだアラートダイアログに統合しました。膨張したレイアウトは次のとおりです。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<com.example.NumberPicker
android:padding="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
アラートダイアログにボタンを追加しました。クリックされたら、ナンバーピッカーの現在の値を取得したいです。
ナンバー ピッカー クラスは次の機能を提供します。
public static int getCurrent() {
return mCurrent;
}
問題は、それを呼び出す方法がわからないことです。私はクラスのオブジェクトを持っていません。com.example.NumberPicker.getCurrent() を介して呼び出すと、静的であると宣言する必要があり、これにはいくつかの悪影響があります。
getCurrent() 関数を呼び出すためにピッカー クラスのオブジェクトを取得する方法を誰かが知っていますか?
アラートダイアログで実行中のオブジェクトから関数を呼び出したいので、単純に新しいオブジェクトを作成するのは正しい方法ではないと思います。
編集:私が期待したように:
NumberPicker np = new NumberPicker(MainScreen.this);
Log.v("TEST", "" + np.getCurrent());
これにより、常に0になります
編集 2: Android ID を追加しました:
<com.example.NumberPicker
android:id="@+id/numberPicker"
android:padding="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
私のコードは次のとおりです。
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(
R.layout.backfall_layout, null);
new AlertDialog.Builder(MainScreen.this)
.setTitle(this.getString(R.string.relapse))
.setView(textEntryView)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
NumberPicker np = (NumberPicker) findViewById(R.id.numberPicker);
Log.v("TEST", "" + np.getCurrent());
--
しかし、ボタンを押すとアプリがクラッシュするようになりました..
編集3:
解決済み:電話する必要があります
NumberPicker np = (NumberPicker) textEntryView.findViewById(R.id.cigarettesPicker);
np.setCurrent(1);