我已經從Android Training Site實施Android教程,並且一切工作到目前爲止。在片段上輸入EditText,並填寫所有其他片段
在Fragment
的內部,我添加了一個EditText
字段,用戶可以在其中輸入一個簡單的文本字符串。
我想要實現的是:如果用戶輸入了一些內容,然後向左或向右滑動,則輸入也應該「複製」新片段。
在培訓中,我有一個ScreenSlidePageFragment.java類和一個ScreenSlideActivity.java類。
我實現一個接口在ScreenSlidePageFragment,as mentioned here:
Communicator mCallback;
public interface Communicator {
void sendData(String inpString);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mCallback = (Communicator) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + "must Implement OnEditChangedListener");
}
}
但最後,我好不容易纔得到它的ScreenSlideActivity。我如何更新指定的片段? 在ScreenSlideActivity中,我試圖將它發送回新的片段。
@Override
public void sendData(String inpString) {
WHATFRAGMENT.changeData(inpString);
}
但怎樣訪問另一個(WHATFRAGMENT),這是在ScreenSlidePagerAdapter創建:
@Override
public Fragment getItem(int position) {
return NewReservationSlidePageFragment.create(position);
}
我需要創建一個完整的片段,並覆蓋新位置?還是有必要解決該活動?以某種方式可以使用FragmentTransaction
嗎?
什麼是最簡單的解決方案?
'getData()'方法不是必須的。每個'Fragment'將在從'FragmentManager'中刪除時調用'sendData()',可能在'onPause()'中。 「Activity」可能實現了接口並將數據轉發到下一個「Fragment」。 –
如果您使用視圖尋呼機** onPause **並且** OnResume **在當時不會接聽電話,我們應該只使用** setUserVisibleHint **方法。 –
@MuthukrishnanRajendran非常感謝,現在它工作。以前不知道'setUserVisibleHint()'。 但是在某一時刻,我得到了一個可能會讓用戶感到困惑的行爲:如果文本字段在其他片段之一上發生了更改,並且被刷回,則數據不會被覆蓋。它仍然是「舊」字符串,即使我嘗試清除它之前:'myEditTxt.getText()。clear()' – a2hur