我在//Get a list of all the names in the before array
var beforeNames = arrayBefore.map(function(person) { return person.name });
//Filter the after array to only contain names not contained in the before array
var uniqueObjects = arrayAfter.filter(function(person) {
return beforeNames.indexOf(person.name) === -1;
});
console.log(uniqueObjects); //[{"name":"Chris","height":"163","weight":"71"}]
中显示蓝牙设备。我之前在ListView
尝试了它并且它有效,但现在我必须将此Activity
包含在ListView
很明显,这里有一两件事不属于Fragment
,registerReceiver
和unregisterReceiver
。
RESULT_CANCELED
以protected void onResume() {
registerReceiver(receiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
registerReceiver(receiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(receiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
registerReceiver(receiver, filter);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
unregisterReceiver(receiver);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_CANCELED){
Toast.makeText(getActivity() , "El Bluetooth debe estar activado para continuar", Toast.LENGTH_SHORT).show();
getActivity().finish();
}
}
,registerReceiver
和unegisterReceiver
开头的行给了我一些问题。
作为一个附加的事实,我试图将其更改为Activity而不是Fragment,但是我的Main类因为我正在使用Fragments而出错。
答案 0 :(得分:26)
所有这些方法和变量都属于Activity
类。因此,请考虑使用父级Activity of Fragment的上下文来调用它们。
您可以将所需方法称为:
getActivity().registerReceiver(receiver, filter);
和
getActivity().unregisterReceiver(receiver);
if(resultCode==RESULT_CANCELED){
可以替换为
if(resultCode == Activity.RESULT_CANCELED){
希望这可以解决您的问题。
答案 1 :(得分:1)
关于广播信息,如果你这样注册,你就不会收到任何信息:
getActivity().registerReceiver(receiver, filter);
你应该写:
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(receiver, filter);
例如,从服务(IntentService)发送意图的情况。
答案 2 :(得分:0)
registerReceiver()
和unregisterReceiver()
方法是Context
类的方法。在这种情况下,您需要Activity
(Context
)。
片段可以通过getActivity()
方法轻松访问其包含的Activity。
RESULT_CANCELED
只是Activity
类的静态变量,因此您可以通过Activity.RESULT_CANCELED
在任何地方访问它。
答案 3 :(得分:0)
如果在片段抵制时在配置更改中重新创建活动,则意味着活动上下文可能会消失,从而导致活动娱乐中的接收者丢失。因此,我建议在应用程序级上下文中注册片段中的广播接收器。然后,您可以分别在片段的onResume()
和onPause()
中注册和取消注册您的接收器。这样,您的接收器就会绑定到片段生命周期而不是活动。