[android]列出在 onActivityResult 组与数据不粘

标签: Java Android
发布时间: 2017/3/19 14:16:08
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我需要设置列表变量使用从 onActivityResult 返回的数据。然后使用该列表来做的事情当 button 被按下。

如果 Log.d 列表设置里面 onActivityResult 后右来说它正确显示的列表。但如果我把内 onResume 列表第二 Log.d 或当 button 被按下,第二个 log 显示为空列表。

不完整的代码,只是相关部分。

public class ImageSelectActivity extends AppCompatActivity {
    public static List<String> path;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image_select);
    Button btnSelectImages = (Button) findViewById(R.id.btnSelect);
    btnSelectImages.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            MultiImageSelector selector = MultiImageSelector.create(ImageSelectActivity.this);
            selector.count(12);
            selector.showCamera(true);
            selector.start(ImageSelectActivity.this, REQUEST_IMAGE);
        }
    });

    Button btnImagesLog = (Button) findViewById(R.id.btnImages);
    btnImagesLog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("path",""+path); //path returns null even AFTER clicking the select button and selecting images.
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQUEST_IMAGE){
        if(resultCode == RESULT_OK){
            // list of image paths
            List<String> path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
            Log.d("images",""+path); //correctly displays path of all selected images.
        }
    }
}

解决方法 1:

你的问题是隐藏

您声明一个完全的列表对象在该方法中︰

// list of image paths
List<String> path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);

这是一个本地变量 !因此你不会指定一个值到 ImageSelectActivity.path,但该本地变量。ImageSelectActivity.path 只是保持其值。

所以,答案很简单︰ 转到行

// list of image paths
path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);

和你应该是很好。嗯,除了东西,使用静态变量往往不是一个好主意。

在那之外︰ 这是基本的东西。如果你不知道这种事情,我推荐你到第一次学习教育材料对这些 Java 基础与进一步接触之前 Android 。例如︰ 你的工作方式通过 Oracle教程;至少基本的 !

官方微信
官方QQ群
31647020