Fragment傳值到Activity
採用介面回撥機制
在Fragment中定義介面
public interface FragmentListener{
void onFragment(Object object);
}
當Fragment被載入到Activity的時候會被回撥,判斷宿主Activity是否實現了介面。
@Override
public void onAttach(Context context) {
super.onAttach(context);
if(context instanceof FragmentListener)
{
mFragmentListener = (FragmentListener)context;
}
else{
throw new IllegalArgumentException("Activity must implements FragmentListener");
}
}
傳值操作,通過介面回撥
mFragmentListener.onFragment("資料來自Fragment");
Activity實現介面回撥方法,並重寫回撥方法。
@Override
public void onFragment(Object object){
button.setText(object.toString());
}
示例:
在Fragment中
public class RightFragment extends Fragment {
private FragmentListener mFragmentListener;
private String name;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
View view =inflater.inflate(R.layout.avtivity_time,container,false);
TextView textView = (TextView)view.findViewById(R.id.time_text);
if (getArguments() != null) {
name = getArguments().getString("MainActivity");
}
textView.setText(name);
mFragmentListener.onFragment("資料來自Fragment");
return view;
}
public interface FragmentListener{
void onFragment(Object object);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if(context instanceof FragmentListener)
{
mFragmentListener = (FragmentListener)context;
}
else{
throw new IllegalArgumentException("Activity must implements FragmentListener");
}
}
}
在Activity中
public class MainActivity extends AppCompatActivity implements RightFragment.FragmentListener {
private Button button;
private RightFragment rightFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button_1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rightFragment = new RightFragment();
Bundle args = new Bundle();
args.putString("MainActivity","Hello");
// setArguments方法必須在fragment建立以後
rightFragment.setArguments(args);
addFragment(rightFragment);
}
});
}
private void addFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.fragment_contain,fragment);
transaction.commit();
}
@Override
public void onFragment(Object object){
button.setText(object.toString());
}
}
相關文章
- 將一個Activity中的資料傳到另一個Activity的Fragment中的方法Fragment
- Android讓Fragment載入到Activity中AndroidFragment
- Activity、Fragment和IntentFragmentIntent
- 3-AVI–Activity與Fragment的資料傳遞Fragment
- Android 元件系列-----Activity的傳值和回傳值Android元件
- 監聽activity、fragment生命Fragment
- Fragment與Activity通訊Fragment
- Activity的跳轉與傳值薦
- Android--單Activity+多Fragment,玩轉FragmentAndroidFragment
- Activity跳到指定的Fragment的方法Fragment
- activity_main與fragment_mainAIFragment
- 專案重構之多Activity多FragmentFragment
- Fragment Transactions和Activity狀態丟失Fragment
- Flutter與Android的混合開發(3)Flutter如何跳轉到Activity,如何傳值FlutterAndroid
- Razor傳值到jsJS
- activity和fragment中startactivityforresult方法的區別Fragment
- 四大元件之Activity_Fragment元件Fragment
- Android開發中巧用Activity和FragmentAndroidFragment
- Flutter Android 端 Activity/Fragment 流程原始碼分析FlutterAndroidFragment原始碼
- Activity 與 Fragment 通訊(99%)完美解決方案Fragment
- Jquery Ajax方法傳值到actionjQuery
- fragment返回鍵關閉fragment以及最後一個fragment的時候關閉activity的簡便方法Fragment
- Android技術棧(一)從Activity遷移到FragmentAndroidFragment
- Android知識點複習1(Activity與Fragment)AndroidFragment
- [Android]Fragment、Activity比較——Android碎片介紹AndroidFragment
- 不同的activity使用bundle物件傳值給廣播接收器物件
- Android | Activity和Fragment最全生命週期+發現大牛AndroidFragment
- Android Fragment 間物件傳遞AndroidFragment物件
- android Fragment與Activity互動,互相發資料(附圖詳解)AndroidFragment
- IOS學習筆記(頁面傳值:屬性傳值,協議代理傳值,閉包傳值)iOS筆記協議
- iOS Block傳值、代理傳值、通知中心iOSBloC
- vue父子傳值與非父子傳值Vue
- 在同一個Activity下實現兩個Fragment之間的通訊Fragment
- Activity回傳資料方法startActivityForResult onActivityResult
- Java傳參傳值Java
- Activity A 跳轉到 Activity B,生命週期的執行過程
- 線上直播原始碼,fragment中onActivityForResult得到返回值原始碼Fragment
- fragment之間相互傳資料、共享資料Fragment