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
- Activity、Fragment和IntentFragmentIntent
- 3-AVI–Activity與Fragment的資料傳遞Fragment
- Android--單Activity+多Fragment,玩轉FragmentAndroidFragment
- Activity和Fragment有什麼區別Fragment
- Activity和fragment是如何互動的Fragment
- Flutter與Android的混合開發(3)Flutter如何跳轉到Activity,如何傳值FlutterAndroid
- Flutter Android 端 Activity/Fragment 流程原始碼分析FlutterAndroidFragment原始碼
- activity和fragment中startactivityforresult方法的區別Fragment
- Android技術棧(一)從Activity遷移到FragmentAndroidFragment
- fragment返回鍵關閉fragment以及最後一個fragment的時候關閉activity的簡便方法Fragment
- Android | Activity和Fragment最全生命週期+發現大牛AndroidFragment
- Jquery Ajax方法傳值到actionjQuery
- Activity A 跳轉到 Activity B,生命週期的執行過程
- fragment之間相互傳資料、共享資料Fragment
- Android點將臺:顏值擔當[-Activity-]Android
- vue父子傳值與非父子傳值Vue
- iOS Block傳值、代理傳值、通知中心iOSBloC
- 線上直播原始碼,fragment中onActivityForResult得到返回值原始碼Fragment
- Java傳參傳值Java
- 元件:非父子間傳值(同級傳值)元件
- FragmentFragment
- Vue--子元件互相傳值,子元件來回傳值,傳值反覆橫跳Vue元件
- 在html中使用axios傳送請求到servlet時遇到的傳值問題HTMLiOSServlet
- Activity跳轉時傳遞資料的騷操作
- 京東上傳圖片到JD API 返回值說明API
- 值傳遞和引用傳遞
- java值傳遞Java
- 按值傳遞
- Vue 元件傳值Vue元件
- 筆記1:vue 利用props 父到子元件傳值(初識元件)筆記Vue元件
- Vue 路由傳值(傳參)詳解Vue路由
- shared_ptr 傳值和傳引用
- 窗體傳值 父子窗體傳值情況 c# 1231C#
- 【BUG系列】Fragment中巢狀Fragment,不顯示Fragment巢狀
- Activity
- Mybatis中List傳值MyBatis
- iOS block 反向傳值iOSBloC