не могу вызвать imageview кастомного диалога

Интерфейс, диалоги, темы, стили, меню
Ответить
Banhammer
Сообщения: 32
Зарегистрирован: 24 июн 2013, 17:09

не могу вызвать imageview кастомного диалога

Сообщение 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
Контактная информация:

Re: не могу вызвать imageview кастомного диалога

Сообщение 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

Re: не могу вызвать imageview кастомного диалога

Сообщение 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
		
	}
	
}
но при его вызове в основном потоке

Код: Выделить всё

RatingDialog rd=new RatingDialog(this);
получаю просто темнеющий экран, тоесть самого диалога нет, что-то я подустал уже за день((

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: не могу вызвать imageview кастомного диалога

Сообщение rezak90 » 30 авг 2013, 00:11

Banhammer писал(а):не помогло
не может быть
Banhammer писал(а):я подумал, что на самом деле мне лучше подойдёт мой кастомный диалог
а их в 98% случаев и нужно делать кастомными, потому как эта конструкция что ты нарисовал устарела. Рекомендуется использовать FragmentDialog.
R.id.team
Политика на форуме запрещена

Banhammer
Сообщения: 32
Зарегистрирован: 24 июн 2013, 17:09

Re: не могу вызвать imageview кастомного диалога

Сообщение Banhammer » 30 авг 2013, 00:15

стоит попробовать

Ответить