首先我想我应该描述一下我的问题: 我想做一个BluetoothRequest来打开它,但我不想创建一个新的Activity。我想将它保存在MainActivity中并将代码放在子类中。这怎么可能? Down是我自己对如何做到的想法,但它不起作用。
我有MainActivity和BluetoothActivity。以下代码来自BluetoothActivity:
public class Bluetooth extends Fragment{
private Context context;
private TextView textView;
private final int REQUEST_ENABLE_BT = 1;
private String BtName;
private String BtAddress;
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
public Bluetooth(Context context){
//constructor
this.context=context;
textView = new TextView(this.context);
}
public boolean bluetoothUnterstuetz(){
if(mBluetoothAdapter == null) {
//Device doesn't support Bluetooth
textView.setText("Device doesn't support Bluetooth");
}
return true;
}
public void bluetoothActivate(){
if(mBluetoothAdapter.getState()== BluetoothAdapter.STATE_ON){
textView.setText("Bluetooth already on.");
}
if(!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
((Activity) context).startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
((Activity) context).setContentView(textView);
}
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
textView.setText(resultCode);
Log.i("bluetooth", "called");
((Activity) context).setContentView(textView);
}
使用extends Fragment没有任何反应,logcat也是空的。使用extends Activity,应用程序在启动后会崩溃。 当我在手机上测试应用程序时,我获得了蓝牙请求并可以选择我的答案,但之后ContentView没有显示任何内容,而且Logcat保持空白
有人知道如何获得结果?
答案 0 :(得分:1)
现在好了。
onActivityResult()
必须位于MainActivity中。如果我将它放入子类中则不会被称为
答案 1 :(得分:0)
您忘记了代码覆盖。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
答案 2 :(得分:0)
AndroidStudio告诉我onActivityResult的功能从未使用过。
使用注释@Override
将使此警告消失。这也是检查你是否正确覆盖的好方法(使用正确顺序的正确参数),因为如果覆盖错误,你将收到错误。如果你扩展Activity
,那么在这里看起来并非如此。
当我在手机上测试应用程序时,我获得了蓝牙请求并可以选择我的回答,但之后ContentView没有显示任何内容。
您确定已调用startActivityForResult()
并返回结果(例如,没有调用finish()
)吗?我会根据您提供的详细信息更新我的答案。
答案 3 :(得分:0)
onActivityResult
是Activity
的受保护方法和Fragment
的公共方法。如果ide警告您该方法永远不会被使用,那是因为您的类既不延伸Activity
也不延伸Fragment