Java 如何将布尔值从主活动传递到片段?

Java 如何将布尔值从主活动传递到片段?,java,android,android-fragments,interface,Java,Android,Android Fragments,Interface,我试图将一个布尔值传递给一个映射片段,这样只有当这个布尔值为false时才会请求位置更新 此布尔值的值在按钮单击时更改 RequestLocationUpdatesListener接口 public interface RequestLocationUpdatesListener { void onRequestLocationUpdates(boolean recording); } 请求位置更新主要活动 // Turn on location updates an

我试图将一个布尔值传递给一个映射片段,这样只有当这个布尔值为false时才会请求位置更新

此布尔值的值在按钮单击时更改

RequestLocationUpdatesListener接口

public interface RequestLocationUpdatesListener {
        void onRequestLocationUpdates(boolean recording);
    }
请求位置更新主要活动

 // Turn on location updates and pass to fragment
 mButtonRecord.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG_CONTEXT, "Start Recording clicked.");
                mRequestLocationUpdates = true; // boolean value
                mRequestingLocationUpdates = new RequestLocationUpdatesListener() {
                    @Override
                    public void onRequestLocationUpdates(boolean recording) {
                        recording = mRequestLocationUpdates;
                        mRequestingLocationUpdates.onRequestLocationUpdates(recording);
                    }
                };
            }
        });
地图片段

日志。我的MapFragment中从未访问过我,我缺少什么

@Override
    public void onRequestLocationUpdates(boolean recording) {
        Log.i(TAG_CONTEXT, "Recording? = " + recording);
    }

你的问题是你每次都在onClick事件中创建一个全新的监听器,这是行不通的

您需要让mRequestingLocationUpdates变量指向实现接口的片段。因此,无论在何处创建MapFragment,都需要将此变量设置为MapFragment

例如,如果您在onCreate中创建MapFragment,则它将如下所示:

@Override
protected void onCreate() {
    // Other code

    MapFragment mapFrag = new MapFragment();
    // Now register your fragment as the listener
    mRequestingLocationUpdates = mapFrag;

    // Other code.. 
}
现在您有了对片段的引用,可以从onClick事件调用它,如下所示:

// Turn on location updates and pass to fragment
 mButtonRecord.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d(TAG_CONTEXT, "Start Recording clicked.");
        mRequestLocationUpdates = true; // boolean value

        mRequestingLocationUpdates.onRequestLocationUpdates( mRequestLocationUpdates );
    }
});

@user2324937的可能重复项您不需要将值传递给您的映射片段,因为它已经有了用户的位置—一点问题都没有!: