如何通过传递挂起的Intent从其先前的活动加载一个活动?

时间:2015-07-03 05:13:41

标签: android android-activity android-pendingintent android-progressbar

我是一个初学者,sory可能这是一个愚蠢的问题,但我不知道如何解决这个问题。 我的应用程序中有两个活动,第一个活动和第二个活动,第一个活动将从图库或相机加载图像,并在第二个活动的图像视图中显示它。在第二个活动中,用户可以通过单击上传将图片上传到服务器按钮,上传过程中会显示通知进度对话框。用户可以在通知进度条上单击任意时间取消上传。当用户点击通知进度时,会挂起待处理的意图。

 public void ProgressBarNotification() {
    mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                mBuilder = new NotificationCompat.Builder(ImageUploadActivity.this);
                mBuilder.setContentTitle("Upload")
                        .setContentText("Upload in progress")
                        .setSmallIcon(R.drawable.ic_launcher);

    // mBuilder.setAutoCancel(true);
   Intent myIntent = new Intent(this, ImageUploadActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(ImageUploadActivity.this, 0, myIntent, Intent.FILL_IN_ACTION);
    mBuilder.setContentIntent(pendingIntent);

}

在onNewIntenet方法中将加载第二个活动(ImageUploadActivity)及其方法initiatepopupwindow(),第二个活动将被加载,即使应用程序已完全最小化。所有这些都正常工作。

 @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
     new Intent(this, ImageUploadActivity.class);
    initiatePopupWindow();
    Toast.makeText(getApplicationContext(),
            "Upload ", Toast.LENGTH_SHORT).show();

}

我的问题是当我在第一个活动(MainActivity)时,当我点击通知进度条时,应用程序将崩溃并显示空指针异常。我知道问题是第二个活动被杀死了所以挂起的意图没有传递给调用第二个活动及其方法。但是 我需要的是,我想在用户点击通知进度时加载第二个活动,我该如何解决这个问题,有人能帮忙吗?

logcat的

07-03 11:06:20.595  31761-31761/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jbn.user.imagegallerydemo/com.jbn.user.imagegallerydemo.ImageUploadActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
        at android.app.ActivityThread.access$700(ActivityThread.java:140)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4921)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
        at com.jbn.user.imagegallerydemo.ImageUploadActivity.onCreate(ImageUploadActivity.java:117)
        at android.app.Activity.performCreate(Activity.java:5206)
           android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)

1 个答案:

答案 0 :(得分:0)

尝试替换

Intent.FILL_IN_ACTION

使用

PendingIntent.FLAG_UPDATE_CURRENT

根据文件

  

此标志表示如果已经描述了PendingIntent   存在,然后保留它,但用它中的内容替换它的额外数据   新的意图。