gpt4 book ai didi

Java Android - onActivityResult 在另一个 Activity 中

转载 作者:行者123 更新时间:2023-11-29 20:13:42 25 4
gpt4 key购买 nike

我是 Java - Android 的新手,我对 onActivityResult 方法有疑问,希望你能帮助我。

我的应用程序始终使用 BT 适配器,但我需要检查 BT 适配器是否可用或已启用,对吗?但这不是我的问题。

当我在 MainActivity 类中时,代码工作正常。但是当我在另一个 Activity 中时 - onActivtiyResult(在 MainActivity 中)不再工作。

所以当我在 MainActivity 中时,然后我手动禁用蓝牙适配器,应用程序要求我启用 BT -> 当我说不时 - 应用程序退出 - 这很好。

但是,当我在另一项 Activity 中时,我禁用了 BTA,应用程序要求我启用 BTA(当我说“否”时)- 不会调用 onActivityResult。为什么?

所以我在 MainActivity 中有这段代码:

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);

if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
return;
}

registerBluetoothAdapter();
}

private void registerBluetoothAdapter()
{
if(!bluetooth.isAvailable())
{
finish();
return;
}

if(!bluetooth.isEnabled())
{
bluetooth.sendEnableRequest(this);
}

receiver = new BluetoothBroadcastReceiver();
registerReceiver(receiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch(requestCode)
{
case 1: // bluetooth enable request
if(resultCode != RESULT_OK)
{
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
}
break;
}
}

蓝牙方法只是来自父类的 BluetoothAdapter...这是我的适配器的广播

public class BluetoothBroadcastReceiver extends BroadcastReceiver
{

@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();

if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED))
{
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
switch (state)
{
case BluetoothAdapter.STATE_OFF:
MainActivity main = (MainActivity) context;
main.startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), 1);
break;
}
}
}

}

我对自己的英语有不好的感觉,所以..对此感到抱歉,感谢您的帮助。

最佳答案

在调用 startActivityForResult() 的 Activity 中调用 onActivityResult()。如果您从主 Activity 调用了 startActivityForResult,那么只有主 Activity 中的 onActivityResult 会被回调,而不会回调任何其他 Activity 。所以相应地调整你的代码。 .在其他 Activity 中也做同样的事情。

关于Java Android - onActivityResult 在另一个 Activity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34385599/

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