Интерфейс, диалоги, темы, стили, меню
-
Banhammer
- Сообщения: 32
- Зарегистрирован: 24 июн 2013, 17:09
Сообщение
Banhammer » 29 авг 2013, 18:46
ну собсна сабж
Код: Выделить всё
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
Log.w("TAG","dialog created");
switch (id) {
case DIALOG_RATE: {
builder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.song_rate, null))
// Add action buttons
.setPositiveButton("y",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
// прописываем новый рейт в преференсе
}
})
.setNegativeButton("n",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// нихуя не делаем
}
}).setTitle(data.get(playing).song);
break;
}
case DIALOG_DELETE: {
break;
}
}
return builder.create();
}
вылетает на обращении к imageView
Код: Выделить всё
protected void onPrepareDialog (int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
Log.w("TAG","lol");
((ImageView)dialog.getWindow().findViewById(R.id.rating_1)).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Log.w("TAG","lol1");
}});
}
я уже ну очень сильно запарился с ним, кто-нить может рассказать почему такое происходит?
NullPointerException*
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 29 авг 2013, 19:46
Код: Выделить всё
builder.setView(inflater.inflate(R.layout.song_rate, null));
вот нужно иметь ссылку на inflater.inflate(R.layout.song_rate, null) и от него вытаскивать, например:
Код: Выделить всё
private ImageView ivRating = null;
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
Log.w("TAG","dialog created");
switch (id) {
case DIALOG_RATE: {
builder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View view = inflater.inflate(R.layout.song_rate, null);
ivRating = view.findViewById(R.id.rating_1);
builder.setView(view)
// Add action buttons
.setPositiveButton("y",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
// прописываем новый рейт в преференсе
}
})
.setNegativeButton("n",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// нихуя не делаем
}
}).setTitle(data.get(playing).song);
break;
}
case DIALOG_DELETE: {
break;
}
}
return builder.create();
}
protected void onPrepareDialog (int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
Log.w("TAG","lol");
ivRating.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Log.w("TAG","lol1");
}});
}
R.id.team
Политика на форуме запрещена
-
Banhammer
- Сообщения: 32
- Зарегистрирован: 24 июн 2013, 17:09
Сообщение
Banhammer » 29 авг 2013, 23:54
не помогло, я подумал, что на самом деле мне лучше подойдёт мой кастомный диалог
Код: Выделить всё
public class RatingDialog extends Dialog implements
android.view.View.OnClickListener{
public RatingDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.song_rate);
Button yes = (Button) findViewById(R.id.rate_dialog_yes_button);
Button no = (Button) findViewById(R.id.rate_dialog_no_button);
yes.setOnClickListener(this);
no.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
но при его вызове в основном потоке
получаю просто темнеющий экран, тоесть самого диалога нет, что-то я подустал уже за день((
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 30 авг 2013, 00:11
Banhammer писал(а):не помогло
не может быть
Banhammer писал(а):я подумал, что на самом деле мне лучше подойдёт мой кастомный диалог
а их в 98% случаев и нужно делать кастомными, потому как эта конструкция что ты нарисовал устарела. Рекомендуется использовать
FragmentDialog.
R.id.team
Политика на форуме запрещена