onActivityResult изменение view компонент в AlertDialog

Интерфейс, диалоги, темы, стили, меню
Ответить
Roman21
Сообщения: 1
Зарегистрирован: 08 авг 2013, 10:52

onActivityResult изменение view компонент в AlertDialog

Сообщение Roman21 » 08 авг 2013, 11:25

Помогите советом.
Проблема(краткое описание): В AlertDialog диалоге не обновляются view компоненты. (Не понимаю как получить доступ к view компонентам в AlertDialog )

Описание:
Есть три блока (SimpleTree список), AlertDIalog и основное Activity.
Все эти три блока я вынес в разные классы:
NewOrdersActivity.class -основное activity
OrderAdapter.class - мой кастом список
DialogScreen.class - мой диалог.

Для пользователя это выглядит след. образом: Тыкаем на элемент списка - Открывается AlertDialog- в нем кнопка "Выбрать фотку из галереи" - тыкаем фотку и меняем view в AlertDialog (Короче выводим эту фотку).
PS.Все работает если я реализовываю это в одном Activity(без разбиения на отдельные классы).

Вот мой код:

OrderAdapter.class- описывать я думаю смысла нет, в нем наш кастом список и из него вызывается AlertDialog


DialogScreen.class:

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

public class DialogScreen extends Activity{
    
	final static int IDD_CLOSE_ORDER = 1;
	final static int IDD_ADD_PHOTO= 2;
	static DB db;
    static View view;
    static int SELECT_PICTURE = 3;
    static ImageView imgFromGallery;
    
    public static  AlertDialog getDialog(final Context ctx, int ID, LayoutInflater lInflater, final String idRow, final Cursor cursor) {
        AlertDialog.Builder builder = new AlertDialog.Builder(ctx);

        switch(ID) {
           case IDD_ADD_PHOTO: // Диалоговое окно About
            builder.setIcon(R.drawable.photocam);
            builder.setTitle("Фотоотчет");
            builder.setCancelable(true);
            view = lInflater.inflate(R.layout.dialog_add_photo, null, false);
            
            imgFromGallery = (ImageView)view.findViewById(R.id.imgFromGallery);
            
            
            builder.setView(view);
            
            
            
            Button btnAddFromGallery = (Button)view.findViewById(R.id.btnAddFromGallery);
            
            btnAddFromGallery.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View arg0) {
					// TODO Auto-generated method stub

					getPhoto(ctx);
					
					
				}
            	
            });
            
            
            builder.setNegativeButton("Отменить", new DialogInterface.OnClickListener() { 
                @Override
                public void onClick(DialogInterface dialog, int which) {
                	dialog.dismiss();		
                	
                }
            });
            
            builder.setPositiveButton("Сохранить", new DialogInterface.OnClickListener() { // Кнопка ОК
                @Override
                public void onClick(DialogInterface dialog, int which) {
                	

                    }
            });

        
            return builder.create();	
         
         default:
            return null;
        }		
    }




static void getPhoto(Context ctx){
	

	          Intent i = new Intent(
	        		Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
	        		 
	          ((Activity) ctx).startActivityForResult(i, SELECT_PICTURE);
     }

}


NewOrdersActivity.class:

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

public class NewOrdersActivity extends Activity{
	
private static final String LOG_TAG = "myLogs";
ExpandableListView elv;
DB db;
String userID;

static int SELECT_PICTURE = 3;
ImageView img;

	  protected void onCreate(Bundle savedInstanceState) {
		    super.onCreate(savedInstanceState);
		    setContentView(R.layout.new_orders_activity);
		    

		  
		   
           // открываем подключение к БД
          db = new DB(this);
          db.open();
		    
          
          // готовим данные по группам для адаптера
          Cursor cursor = db.getOrdersData(1);
          startManagingCursor(cursor);
          
          // сопоставление данных и View для групп
          String[] groupFrom = { DB.COLUMN_ID };
          int[] groupTo = { android.R.id.text1 };
          // сопоставление данных и View для элементов
          String[] childFrom = { DB.COLUMN_STATUS };
          int[] childTo = { android.R.id.text1 };

          // создаем адаптер и настраиваем список
          SimpleCursorTreeAdapter sctAdapter = new OrderAdapter(db,this, cursor,
              R.layout.customer_adapter_theme_top, groupFrom,
              groupTo, R.layout.customer_adapter_theme_content, childFrom,
              childTo);
          elv = (ExpandableListView)findViewById(R.id.elv_new_orders);
          elv.setAdapter(sctAdapter);
          


          

		  }
	
	  

	  public void onActivityResult(int requestCode, int resultCode, Intent data) {
			
			 
			//Ответ галереи
		    if (resultCode == RESULT_OK) {
		        if (requestCode == SELECT_PICTURE) {
		            Uri selectedImageUri = data.getData();
		            String selectedImagePath = getPath(selectedImageUri);
		            BitmapDrawable d = new BitmapDrawable(selectedImagePath);
                            // img.setImageDrawable(d);
                            Вот тут я не понимаю как обратится к view в AlertDialog который реализован в классе DialogScreen.class
		   
		  
		        }
		    }
		  
		}



		  public String getPath(Uri uri) {
		      String[] projection = { MediaStore.Images.Media.DATA };
		      Cursor cursor = managedQuery(uri, projection, null, null, null);
		      int column_index = cursor
		              .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
		      cursor.moveToFirst();
		      return cursor.getString(column_index);
		  }


}

Ответить