2014-09-04 3 views
0

Я хочу начать другое действие из post выполнить и передать некоторые аргументы. Но он закрывает приложение. Это мой onPostExecute():Запуск нового действия из onPostExecute()

@Override 
protected void onPostExecute(Bitmap result) { 
    super.onPostExecute(result); 
    if (result != null) { 
     imageView.setImageBitmap(result); 
     imageView.setOnClickListener(new OnClickListener(){ 
      public void onClick(View view) { 
       Toast.makeText(context, ""+captionStr, Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(context, Article.class); 
       Bundle b = new Bundle(); 
       b.putString("url", "Hello"); //Your id 
       intent.putExtras(b); //Put your id to your next Intent 
       context.startActivity(intent); 
       // context.finish();*/ 
      } 
     }); 
    } else { 
     imageView.setImageResource(R.drawable.ic_launcher); 
    } 
} 

Мой манифест декларации

<activity android:name=".com.tdodemo.tdo.Article" /> 

LogCat

09-04 10:53:30.759: E/AndroidRuntime(15546): FATAL EXCEPTION: main 
09-04 10:53:30.759: E/AndroidRuntime(15546): Process: com.tdodemo.tdo, PID: 15546 
09-04 10:53:30.759: E/AndroidRuntime(15546): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.app.ContextImpl.startActivity(ContextImpl.java:1146) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.app.ContextImpl.startActivity(ContextImpl.java:1133) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.content.ContextWrapper.startActivity(ContextWrapper.java:328) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at com.tdodemo.tdo.ImageLoadTask$1.onClick(ImageLoadTask.java:82) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.view.View.performClick(View.java:4562) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.view.View$PerformClick.run(View.java:18918) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.os.Handler.handleCallback(Handler.java:808) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.os.Handler.dispatchMessage(Handler.java:103) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.os.Looper.loop(Looper.java:193) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at android.app.ActivityThread.main(ActivityThread.java:5388) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at java.lang.reflect.Method.invokeNative(Native Method) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at java.lang.reflect.Method.invoke(Method.java:515) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:655) 
09-04 10:53:30.759: E/AndroidRuntime(15546): at dalvik.system.NativeStart.main(Native Method) 
+1

почему isViewView.setOnClickListener в onPostExe ....? – KOTIOS

+1

Опубликуйте свои ошибки в Logcat – SilentKiller

+0

В doInBackground() Я загружаю изображение с сервера и в onpostExecute() Я устанавливаю его в ImageView. При нажатии этого изображения я хочу начать другое действие. – Manasi

ответ

0

Вам нужно добавить пометка intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);

Intent intent = new Intent(context, Article.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
Bundle b = new Bundle(); 
b.putString("url", "Hello"); //Your id 
intent.putExtras(b); //Put your id to your next Intent 
context.startActivity(intent); 
+0

. спасибо :) – Manasi

-1

Попробуйте переместить этот

imageView.setImageBitmap(result); 
    imageView.setOnClickListener(new OnClickListener(){ 

     public void onClick(View view) { 

      Toast.makeText(context, ""+captionStr, Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent(context, Article.class); 
      Bundle b = new Bundle(); 
      b.putString("url", "Hello"); //Your id 
      intent.putExtras(b); //Put your id to your next Intent 
      context.startActivity(intent); 
      // context.finish();*/ 
     } 
    });` 

внешней поверхности onPostExecute, на ваш главный Мероприятия после вызова вашего класса asyncTask. onPostExecute сохранить изображение в вытяжке каталог, изменить ImageView к
imageView.setImageBitmap(res.drawable.Image);

+0

Но мой текущий класс - asyncTask – Manasi

+0

Я забыл про это извините, попробовал мое новое решение @Manasi – ChonBonStudios

0

Попробуйте некоторые вещи, как это:

Intent intent_name = new Intent(); 
intent_name.setClass(getApplicationContext(),Article.class); 
Bundle b = new Bundle(); 
b.putString("url", "Hello"); //Your id 
intent_name.putExtras(b); 
startActivity(intent_name); 

ИЛИ

Поскольку один из аргументов вашей AsyncTask является деятельность вы может непосредственно использовать

Intent intent_name = new Intent(activity, Article.class); 
Bundle b = new Bundle(); 
b.putString("url", "Hello"); //Your id 
intent_name.putExtras(b); 
activity.startActivity(); 

надеюсь, что это может вам помочь!

0

Попробуйте с вашим названием.

Intent intent = new Intent(YOUR ACTIIVITY NAME.this , Article.class); 
startActivity(intent); 
0

видя ваш LogCat это говорит о требуемой flag.Try, добавив, что флаг в своем намерении

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
0

Try код тис, тис работает для меня

@Override 
     protected void onPostExecute(Void result) 
     { 
      super.onPostExecute(result); 
      Intent intent = new Intent(MyAsyncTaskActivity.this, NextActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      Context().startActivity(intent); 
     } 
Смежные вопросы