2014-09-04 80 views
0

我想從post執行另一個Activity並將一些參數傳遞給它。但它強制關閉應用程序。這是我的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

爲什麼imageView.setOnClickListener在onPostExe ....? – KOTIOS 2014-09-04 05:19:51

+1

發佈您的Logcat錯誤 – SilentKiller 2014-09-04 05:20:21

+0

在doInBackground()我正在從服務器加載圖像並在onpostExecute()我將它seting它到ImageView。點擊這個圖片我想開始另一個活動。 – Manasi 2014-09-04 05:22:34

回答

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

它的工作。 thanx :) – Manasi 2014-09-04 06:39:28

-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 2014-09-04 05:24:57

+0

我忘了那個抱歉的伴侶,試試我的新解決方案@Manasi – ChonBonStudios 2014-09-04 05:34:13

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); 

OR

由於您的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

嘗試那朵代碼,TIS爲我工作

@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); 
     }