[英]How do I pass a boolean value from my Main Activity to a fragment?
我試圖將布爾值傳遞給地圖片段,以便僅當此布爾值為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中從未訪問過Log.i,我還缺少什么?
@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 );
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.