2014-01-05 1 views
1
Intent intent = new Intent(Intent.ACTION_PICK, null); 
intent.setType("image/*"); 
startActivityForResult(intent, TServiceInfo.ACTIVITY_PICSELECTED); 

Как и в случае с кодом выше, Activity перейдет в системную галерею. Но запустится ли запуск программы TServiceInfo.class или нет?некоторые вопросы ablout startActivityForResult()

TServiceInfo.ACTIVITY_PICSELECTED равно 4, могу ли я написать startActivityForResult(intent, 4); В чем разница между ними?

(TServiceInfo.class является подключением класса между клиентом и сервером)

ответ

2

Там нет никакой разницы. Убедитесь, что вы используете то же самое, что и requestCode в onActivityResult().

1

TServiceInfo.ACTIVITY_PICSELECTED полезен, если у вас есть несколько вещей, которые нужно сделать в onActivityResult метод!

Который также зависит от многих вещей, например, если вы хотите, чтобы видео было просмотрено в галерее/или для аудио, тогда вы можете установить еще 2 целочисленных переменных, таких как ACTIVITY_VIDEO_SELECTED, ACTIVITY_AUDIO_SELECTED!

Вы можете иметь несколько экземпляров

Intent intent = new Intent(Intent.ACTION_PICK, null); 
intent.setType("video/*"); 
startActivityResult(intent, TServiceInfo.ACTIVITY_VIDEO_SELECTED); 

Или

Intent intent = new Intent(Intent.ACTION_PICK, null); 
intent.setType("audio/*"); 
startActivityResult(intent, TServiceInfo.ACTIVITY_AUDIO_SELECTED); 

Но Вы можете иметь только один экземпляр onActivityResult! Таким образом, в этом методе вы можете использовать значение, чтобы предсказать, что с какого экземпляром он был назван как:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == TServiceInfo.ACTIVITY_PICSELECTED && resultCode == RESULT_OK &&null != data) 
     { 

       // do something here 
     } 
     if (requestCode == TServiceInfo.ACTIVITY_VIDEO_SELECTED && resultCode == RESULT_OK &&null != data) 
     { 
       // do something here 

     } 
     if (requestCode == TServiceInfo.ACTIVITY_AUDIO_SELECTED && resultCode == RESULT_OK &&null != data) 
     { 
       // do something here 

     } 
} 

Таким образом, сохраняя значения этих переменных (ACTIVITY_PICSELECTED, ACTIVITY_VIDEO_SELECTED, ACTIVITY_AUDIO_SELECTED) Вы можете предсказать, какой код должен быть выполнен!

+0

спасибо за полезный повтор – user3151261

+0

Есть некоторые статические методы, которые используются для подключения к серверу и получения результатов от сервера в TServerInfo.class. Я хотел бы знать, будет ли это (startActivityResult (намерение, TServiceInfo.ACTIVITY_PICSELECTED);) запустить эти методы. Потому что я не могу найти коды, которые называют эти методы. – user3151261

+0

Если это фоновый поток, расширяющий Async Task, то он накачивается с использованием 'new TServerInfo(). Execute (" "); –