2015-10-18 71 views
0

首先,我想我应该描述我的问题: 我想要做一个BluetoothRequest来打开它,但我不想创建一个新的活动。我想保留在MainActivity中并将代码放在子类中。这怎么可能?羽绒服是我自己的想法,如何去做,但它不起作用。onActivityResult not beeing called

我有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); 
    } 

With extends Fragment nothing nothing,logcat is empty。随着扩展活动,应用程序启动后崩溃。 当我测试我的手机上的应用程序,我得到的BluetoothRequest,并可以选择我的答案,但之后的ContentView什么也没有显示,也Logcat保持空

有人知道如何获得结果?

+0

[onActivityResult可能重复不起作用?](http://stackoverflow.com/questions/1984233/onactivityresult-doesnt-work) – 0X0nosugar

回答

0

您忘记了标记覆盖。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
} 
0

AndroidStudio告诉我函数onActivityResult从未使用过。

使用注释@Override将使此警告消失。这也是一个很好的方法来检查你是否正确覆盖(正确的顺序是正确的参数),因为如果覆盖错误,你会得到一个错误。如果你扩展Activity,这里看起来不是这种情况。

当我在手机上测试应用程序时,我得到了BluetoothRequest并可以选择我的答案,但之后ContentView什么也没有显示。

你确定你的startActivityForResult()被调用并返回结果(即没有调用finish()例如)?我会根据您提供的详细信息更新我的答案。

+0

是'startActivityForResult ()'被调用,因为通过取消注释行我没有得到请求。 它应该提供一个结果,但我无法调用'onActivityResult()'函数 – phenixclaw

+0

@phenixclaw您不必调用onActivityResult()。一旦您所调用的活动完成,该系统会为您完成。 – Shlublu

+0

那么,如果我不打开第二个活动,我只是使用Mainactivity它不会工作?我需要为请求打开第二个活动? – phenixclaw

0

onActivityResultActivity的受保护方法和Fragment的公开方法。如果ide警告你该方法从来没有使用是因为你的班级既不扩展也不ActivityFragment

+0

是的,我没有使用片段和活动。随着活动应用程序崩溃与启动应用程序,现在与片段警告不再存在,但onActivityResult不被调用。 正如我理解的声明,[链接](http://developer.android.com/guide/topics/connectivity/bluetooth。html)应自动调用onActivityResult “传递给startActivityForResult()的REQUEST_ENABLE_BT常量是本地定义的整数(它必须大于0),系统会将您的onActivityResult()实现作为requestCode参数传回给您。 “ @Shlublu – phenixclaw

+0

更新你的问题。没有看到代码就几乎不可能理解正在发生的事情 – Blackbelt

0

现在好了它现在可以工作。 onActivityResult()必须在MainActivity中。如果我把它放到子类中,它不会被称为