gpt4 book ai didi

java - putExtra()、getStringExtra() - 为什么它不起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 08:51:46 24 4
gpt4 key购买 nike

我怀疑这只是一些愚蠢的错误,但我被卡住了。问题很简单:我的字符串 path 没有发送到 MainActivity

  1. 在 FileListActivity.class 中创建 Intent

    intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("path", fileName);
    Toast.makeText(this, fileName + " set to play!", Toast.LENGTH_SHORT).show();
    startActivity(intent);
  2. 在 MainActivity.class 中接收 Intent

    protected void onResume(){
    super.onResume();
    Toast.makeText(this, "path set" + getIntent().getStringExtra("path"), Toast.LENGTH_SHORT).show();
    if(getIntent().hasExtra("path")) try {
    mediaPlayer.setDataSource(this, Uri.parse(getIntent().getStringExtra("path")));
    mediaPlayer.prepare();
    } catch (IOException e) {
    e.printStackTrace();
    }

FileListActivity 中的 Toast 显示正确的文件名。在 MainActivity 中为空。

最佳答案

尝试重写 MainActivity 中的 protected void onNewIntent (Intent intent) 如下...

@Override
protected void onNewIntent (Intent intent) {
setIntent(intent);
}

使用 Intent.FLAG_ACTIVITY_SINGLE_TOP 重新启动 MainActivity 并在 MainActivity onResume( ) 方法不会获得新的 Intent,它只会获得原始的 Intent,它不会有您的 path extra。

通过覆盖 onNewIntent(...) 并使用它来调用 setIntent(...),新的 Intent 会覆盖原来的一个和 onResume() 中对 getIntent() 的调用应该得到正确的数据。

关于java - putExtra()、getStringExtra() - 为什么它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22582509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com