gpt4 book ai didi

android - finishActivity() - 关闭所有具有确切请求代码的 Activity

转载 作者:行者123 更新时间:2023-12-04 18:07:50 25 4
gpt4 key购买 nike

我是 android 的新手,但在战斗 ;) 我决定编写 mp3 播放器。我对我的任务有疑问。我想从我的文件浏览器中选择一个文件来播放。它是这样实现的:

A类的Activity启动B类的Activity。然后开始几次B类的 Activity 。每次使用 startActivityForResult (intent, REQUEST_CODE) 实现时 - 请求代码每次都是相同的。从上一个 Activity 我想回到第一个 Activity 并得到结果。所以我需要关闭到目前为止打开的所有 Activity 。因为它们都具有相同的 REQUEST_CODE,所以我使用 finishActivity(REQUEST_CODE) (关闭最后一个之前的所有)然后 finish() (关闭最新的)。结果与 finish() only 相同——只有最后一个 Activity 关闭。你能告诉我我的错误在哪里吗?我会非常感激。这是与该问题相关的一些代码。首先,MainActivity.class 中的 Intent 是发送(在 browseFiles 方法中)。然后执行FileListActivity.class的代码。以下 FileListActivity.class 代码 fragment 位于末尾。最后,应该执行 MainActivity.class 中的 onActivityResult 。

MainActivity.class

public void browseFiles (View v) throws IOException {
Intent intent = new Intent(this, FileListActivity.class);
intent.putExtra(path, "/");
startActivityForResult(intent, R.integer.REQUEST_CHOOSE_A_SONG);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode,resultCode,data);
switch(requestCode){
case R.integer.REQUEST_CHOOSE_A_SONG:
if(resultCode == RESULT_OK) try {
mediaPlayer.setDataSource(this, Uri.parse(data.getStringExtra(path)) );
} catch (IOException e) {
e.printStackTrace();
}

}
}

FileListActivity.class

if(new File(fileName).isDirectory()){
intent = new Intent(this, FileListActivity.class);
intent.putExtra("path", fileName);
startActivityForResult(intent, R.integer.REQUEST_CHOOSE_A_SONG);
}
else {
intent = new Intent();
intent.putExtra("path", fileName);
setResult(RESULT_OK, intent);
finishActivity(R.integer.REQUEST_CHOOSE_A_SONG);
Toast.makeText(this, fileName + " set to play!", Toast.LENGTH_SHORT).show();
finish();
}

提前致谢!马尔文卡

最佳答案

我找到了解决方案。也许对某人有用。 FLAG_ACTIVITY_SINGLE_TOP 还不够。在这里:

文件列表 Activity .java

intent = new Intent(this, MainActivity.class);
intent.putExtra("path", fileName);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

和MainActivity.java

protected void onNewIntent (Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}

关于android - finishActivity() - 关闭所有具有确切请求代码的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575036/

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