onActivityResult没有被称为

时间:2015-10-18 16:49:09

标签: android

首先我想我应该描述一下我的问题: 我想做一个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保持空白

有人知道如何获得结果?

4 个答案:

答案 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)

onActivityResultActivity的受保护方法和Fragment的公共方法。如果ide警告您该方法永远不会被使用,那是因为您的类既不延伸Activity也不延伸Fragment