我需要檢測用戶從我的某個片段中滑入和滑出的情況,我嘗試了onPause,但是在滑動到相鄰的屏幕時它似乎沒有暫停(在將兩個屏幕移開時它被破壞)。如果可能的話,我想從片段本身做到這一點,因爲我正在動態地改變片段,而且如果某個片段存在,我的一些代碼只會有用。當用戶「瀏覽」viewpager片段時運行代碼?
可以做到這一點嗎?如何檢測「out」(如果可能的話從片段本身)?
編輯:
我使用上這似乎是做到這一點的最好辦法片段setUserVisibleHint試過,但它永遠不會被調用。我使用的API級別19,我不知道缺少了什麼:
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class Contacts extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.fragment_screen_contacts, container, false);
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
Log.d("MyFragment", "This never shows up.");
Toast.makeText(getActivity(), "Neither does this", Toast.LENGTH_LONG).show();
}
}
嗨Makario,在我的viewpager中的片段可以由用戶自定義,所以我想如果可以的話,在片段本身包含代碼。這樣我就不會向Viewpager添加代碼,如果用戶沒有設置特定的片段,那麼這些代碼將毫無用處。讓我知道如果你想出了一個解決方案,或者如果沒有別的出現,我會接受你的答案,在這一點上我試圖setUserVisibleHint沒有運氣(檢查編輯) – lisovaccaro
@ Liso22我更新了你的答案。你可以在你的子類中添加一個方法(如果你有更深的子類,可以覆蓋它)。然後,您可以在需要時調用該方法。 – Makario
非常感謝。我主要使用了你的代碼,儘管我修改了onPageSelected的內部,我添加了Martín推薦的接口。 – lisovaccaro