2014-09-04 34 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); 
     }