Android 如何在不是MainActivity的活动中选择文件夹
我在一个应用程序中有两个活动,MainActivity和SecondActivity 我想在SecondActivity中使用Android 如何在不是MainActivity的活动中选择文件夹,android,Android,我在一个应用程序中有两个活动,MainActivity和SecondActivity 我想在SecondActivity中使用ACTION\u OPEN\u DOCUMENT\u TREEACTION来选择一个文件夹,但从未成功 本机文件夹选择器将结果返回到MainActivity,并且不会触发这两个活动的onActivityResult。只有在MainActivity中使用ACTION\u OPEN\u DOCUMENT\u TREEACTION,我的需求才会成功 下面的代码是我的示例 <
ACTION\u OPEN\u DOCUMENT\u TREE
ACTION来选择一个文件夹,但从未成功
本机文件夹选择器将结果返回到MainActivity,并且不会触发这两个活动的onActivityResult。只有在MainActivity中使用ACTION\u OPEN\u DOCUMENT\u TREE
ACTION,我的需求才会成功
下面的代码是我的示例
<-- Manifest.xml -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second"
android:theme="@style/AppTheme.NoActionBar"></activity>
</application>
因此,我的问题是,如何将选择器的返回目标分配给SecondActivity而不是MainActivity?根据,如果设置,则不会调用onActivityResult,这解释了为什么它随后返回到MainActivity。删除该标志将解决问题,但如果您打算保留该标志,则需要找到其他解决方法
如果设置,则新活动不会保留在历史堆栈中。一旦
用户离开它,活动就完成了。今年五月
也可以使用noHistory属性设置
如果已设置,则在当前活动启动时永远不会调用onActivityResult()
开始设置结果并完成的新活动
我误解了这面旗帜的含义。非常感谢你。
// MainActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
fab.setOnClickListener { view ->
val intent = Intent(this, SecondActivity::class.java)
intent.flags += Intent.FLAG_ACTIVITY_NO_HISTORY
startActivity(intent)
}
}
// SecondActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
setSupportActionBar(toolbar)
fab.setOnClickListener { view ->
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
startActivityForResult(intent, SecondActivity.REQ_CODE)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data) // Never run to here
if (requestCode == SecondActivity.REQ_CODE && resultCode == RESULT_OK) {
val selectedFile = data?.data
}
}