#android #object #picker
#Android #объект #средство выбора
Вопрос:
Я думаю, что основная проблема заключается в следующем.
Я использую это средство выбора номера, поскольку оно не предоставляется Android SDK:http://www.quietlycoding.com/?p=5amp;cpage=1#comment-10645
Я интегрировал ее в раздутый alertdialog. Здесь раздутый макет:
<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>
Я добавил кнопку в alertdialog. Если щелкнуть по ней, я хочу получить текущее значение средства выбора номера.
Класс средства выбора чисел предоставляет функцию:
public static int getCurrent() {
return mCurrent;
}
Проблема в том, что я не знаю, как ее вызвать. У меня нет объекта класса.
Если я вызываю ее через com.example.NumberPicker.GetCurrent(), я должен объявить ее статической, и это имеет некоторые негативные побочные эффекты.
Кто-нибудь знает, как я получаю объект класса средства выбора, чтобы вызвать функцию GetCurrent ()?
Я думаю, что простое создание нового объекта — неправильный способ, потому что я хочу вызвать функцию из запущенного объекта в моем alerdialog.
Редактировать: Как я и ожидал:
NumberPicker np = new NumberPicker(MainScreen.this);
Log.v("TEST", "" np.getCurrent());
Это всегда дает мне 0
Правка 2: Я добавил идентификатор Android:
<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);
Комментарии:
1. Вместо того, чтобы использовать встроенный NumberPicker, почему бы вам не взглянуть на эту библиотеку пользовательского интерфейса: code.google.com/p/android-wheel ?
Ответ №1:
Кто-нибудь знает, как я получаю объект класса средства выбора, чтобы вызвать функцию GetCurrent ()?
-
Добавьте
android:id
значение к вашемуNumberPicker
элементу в свой макет XML. -
Когда вы раздуваете макет для своего
AlertDialog
, вызывайтеfindViewById()
увеличенный макет, передавая идентификатор, который вы указали на шаге # 1, и преобразуя результат вNumberPicker
.
Комментарии:
1. Спасибо. Я думаю, что это правильный путь. Но теперь мое приложение выходит из строя. Я добавляю свой новый код к сообщению выше.