在最后一个putExtra下面的for循环中,即使它们采用不同的参数和不同的var,也会覆盖第一个putExtra。

首先:putExtra(String,String)
第二个:putExtra(String,int)

注意:videos [i]是一个字符串数组

 Intent intent = new Intent(this,DownloadService.class);
        for(int i=0;i<videos.length;i++){
             intent.putExtra("VIDEOS",videos[i]);
         intent.putExtra("FILENR",(i + 1));
             startService(intent);

        }


在我的扩展IntentService的DownloadService中,来自VIDEOS的值是null!
这是为什么 ?

编辑:
这是我的DownloadService类中的代码的一部分:

Intent broadcastIntent = new Intent();
    notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, null, 0);

notification = new Notification(R.drawable.icon, "Skitips", System.currentTimeMillis());
contentView = new RemoteViews(getPackageName(), R.layout.progress_layout);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notification.contentView = contentView;
notification.contentIntent = contentIntent;
contentView.setProgressBar(R.id.status_progress, 100, 0, false);
contentView.setTextViewText(R.id.status_text,"Downloading...");

String full_url = "";

    full_url = URL + intent.getStringExtra("VIDEOS");

String fileName = "";

    fileName = intent.getStringExtra("VIDEOS");

String fileNr = "";

    fileNr = intent.getStringExtra("FILENR");


    int count;






   Log.e("Whattttttt","is the value of VIDEOOOOSSSS: " + full_url);
    Log.e("Whatttt","is the value of fileNrrrrrrrrrrrr:" + fileNr);
    try {
    URL url = new URL(full_url);
    URLConnection conexion = url.openConnection();
    conexion.connect();
    File file = new File(root.getPath(), fileName);

    int lenghtOfFile = conexion.getContentLength();
    Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);

    InputStream input = new BufferedInputStream(url.openStream());
    OutputStream output = new FileOutputStream(file);

    byte data[] = new byte[1024];

    long total = 0;


contentView.setTextViewText(R.id.status_text,“正在下载(” + fileNr +“ / 77)”);

在粗体文本中有fileNr,我需要从其他活动中获取fileNr,但是在这种情况下,它为我提供了null ...

最佳答案

在您的问题中

对于不同的值,键始终保持不变,这就是为什么,

尝试使用

         intent.putExtra(DownloadService.VIDEOS+i,videos[i]);
         intent.putExtra(DownloadService.fileNr+i, i++);


并得到类似的结果

        DownloadService.VIDEOS0,DownloadService.fileNr0,
        DownloadService.VIDEOS1,DownloadService.fileNr1,


编辑:尝试此代码。

 Intent intent = new Intent(this,DownloadService.class);
        putStringArrayListExtra("Videos_key", videos);
        startService(intent);


还有一件事,如果您传递array of integer和一些Array of video URI,请尝试使用

    putStringArrayListExtra(String name, ArrayList<String> value)
    putIntegerArrayListExtra(String name, ArrayList<Integer> value)


并避免循环。

谢谢。

关于android - putExtra覆盖其他putExtra,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7738829/

10-09 05:20