日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android攻城狮fragment

發布時間:2024/1/8 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android攻城狮fragment 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1 //1,fragment靜態加載:MainActivity MainActivty1_2 Myfragment1 2 //2,fragment動態加載 :MainActivity Myfragment2 3 //3,fragment生命周期: Myfragment4_life 4 //4,fragment和:Activity之間通信:::MainActivity4 Myfragment5 5 public class MainActivity extends Activity implements OnCheckedChangeListener { 6 private RadioGroup group; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.main); 12 group = (RadioGroup) findViewById(R.id.radioGroup1); 13 group.setOnCheckedChangeListener(this); 14 15 } 16 17 @Override 18 public void onCheckedChanged(RadioGroup group, int checkedId) { 19 // TODO Auto-generated method stub 20 switch (checkedId) { 21 case R.id.radio0: { 22 //靜態加載fragment: 23 //第一個Activity跳轉Activity1_2(xml布局中是含有android:name="com.example.fragment.Myfragment1"的fragment標簽) 24 //Myfragment1類繼承fragment 25 //Myfragment1類中的xml布局含有TextView和Button 26 Intent intent = new Intent(MainActivity.this, MainActivty1_2.class); 27 startActivity(intent); 28 break; 29 } 30 //動態加載fragment: 31 case R.id.radio1: { 32 //創建Myfragment2類繼承fragment 33 //Myfragment2類中的xml布局含有TextView和Button 34 //把fragment2添加到main中的xml中的 LinearLayout布局(id=R.id.frame) 35 Myfragment2 fragment2 = new Myfragment2(); 36 FragmentManager fragmentManager = getFragmentManager(); 37 FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); 38 beginTransaction.add(R.id.frame, fragment2);//把fragment2添加到拿個布局 39 beginTransaction.addToBackStack(null);//設置物理連接返回鍵 40 beginTransaction.commit(); 41 42 break; 43 } 44 case R.id.radio2: { 45 46 break; 47 } 48 49 case R.id.radio3: { 50 Intent intent = new Intent(MainActivity.this, MainActivity4.class); 51 startActivity(intent); 52 53 break; 54 } 55 56 } 57 } 58 59 }

?

1 public class MainActivty1_2 extends Activity { 2 3 private TextView textView; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 // TODO Auto-generated method stub 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.main2); 10 Button button = (Button) findViewById(R.id.but); 11 button.setText("改變"); 12 textView = (TextView) findViewById(R.id.text); 13 button.setOnClickListener(new OnClickListener() { 14 15 @Override 16 public void onClick(View v) { 17 // TODO Auto-generated method stub 18 textView.setText("textView改變了"); 19 } 20 }); 21 } 22 }

?

public class Fragment1 extends android.support.v4.app.Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.view1, container, false);} }

?

1 public class Myfragment2 extends Fragment{ 2 3 4 @Override 5 public View onCreateView(LayoutInflater inflater, ViewGroup container, 6 Bundle savedInstanceState) { 7 // TODO Auto-generated method stub 8 //resource:需要加載的布局文件 9 //root:layout的viewGrup 10 // attachToRoot:false 不返回父viewGrup 11 View view = inflater.inflate(R.layout.fragment, container, false); 12 TextView textView=(TextView) view.findViewById(R.id.text); 13 textView.setText("動態加載fragment"); 14 return view; 15 } 16 17 }

?

、、//--------------------生命周期--------------------
1 public class Myfragment4_life extends Fragment { 2 3 // 1.當Fragment被添加到Activity時候會回調這個方法,并且只調用一次 4 @Override 5 public void onAttach(Activity activity) { 6 // TODO Auto-generated method stub 7 super.onAttach(activity); 8 } 9 10 // 2.創建fragment時會回調,只調用一次 11 @Override 12 public void onCreate(Bundle savedInstanceState) { 13 // TODO Auto-generated method stub 14 super.onCreate(savedInstanceState); 15 } 16 17 // 3.每次創建都會繪制Fragment的view組件時回調該方法 18 @Override 19 public View onCreateView(LayoutInflater inflater, ViewGroup container, 20 Bundle savedInstanceState) { 21 // TODO Auto-generated method stub 22 View view = inflater.inflate(R.layout.fragment, container, false); 23 TextView textView = (TextView) view.findViewById(R.id.text); 24 25 return view; 26 } 27 28 // 4.當fragment所在的Activity啟動完成后調用 29 @Override 30 public void onActivityCreated(Bundle savedInstanceState) { 31 // TODO Auto-generated method stub 32 super.onActivityCreated(savedInstanceState); 33 } 34 35 // 5.進入啟動fragment 36 @Override 37 public void onStart() { 38 // TODO Auto-generated method stub 39 super.onStart(); 40 } 41 42 // 6.恢復fragment時會被調用,調用onStart()方法后面一定會調用onResume() 43 @Override 44 public void onResume() { 45 // TODO Auto-generated method stub 46 super.onResume(); 47 } 48 49 // 7.暫停fragment時會被調用 50 @Override 51 public void onPause() { 52 // TODO Auto-generated method stub 53 super.onPause(); 54 } 55 56 // 8.停止fragment時會被調用 57 @Override 58 public void onStop() { 59 // TODO Auto-generated method stub 60 super.onStop(); 61 } 62 63 // 9.銷毀fragment所包含的view組件時 64 @Override 65 public void onDestroyView() { 66 // TODO Auto-generated method stub 67 super.onDestroyView(); 68 } 69 70 // 10.銷毀fragment時會被調用 71 @Override 72 public void onDestroy() { 73 // TODO Auto-generated method stub 74 super.onDestroy(); 75 } 76 77 // 11.fragment從activity中刪除時會回調該方法。只調用一次 78 @Override 79 public void onDetach() { 80 // TODO Auto-generated method stub 81 super.onDetach(); 82 } 83 }

//---------------------fragment與activity通信----------------------------

// Fragment與Activity通信 // (1)Fragment可以調用getActivity()方法獲取它所在的Activity; // (2)Activity可以調用FragmentManager的findFragmentById() // 或者findFragmentByTag()方法獲取Fragment。// Activity --> Fragment:在Activity中創建Bundle數據包, // 并調用Fragment的setArguments(Bundle bundle)方法, // 然后在Fragment中使用getArguments()獲取Bundle數據包。// Fragment --> Activity:需要在Fragment中定義一個內部回調接口, // 再讓包含該Fragment的Activity實現該回調接口。 // 這樣Fragment可調用該回調方法將數據傳遞給Activity。 public class MainActivity4 extends Activity implements MyListener {private Button button;private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main4);button = (Button) findViewById(R.id.send);editText = (EditText) findViewById(R.id.editText);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString text = editText.getText().toString().trim();Myfragment5 fMyfragment5 = new Myfragment5(); // Activity --> Fragment:在Activity中創建Bundle數據包, // 并調用Fragment的setArguments(Bundle bundle)方法, // 然后在Fragment中使用getArguments()獲取Bundle數據包。Bundle bundle = new Bundle();bundle.putString("name", text);fMyfragment5.setArguments(bundle);FragmentManager fragmentManager = getFragmentManager();FragmentTransaction beginTransaction = fragmentManager.beginTransaction();beginTransaction.add(R.id.layout, fMyfragment5, "fragment5");beginTransaction.commit();Toast.makeText(MainActivity4.this, "向fragment發送數據"+text, 1).show();}});// 靜態加載FragmentManager fragmentManager = getFragmentManager();Fragment findFragmentById = fragmentManager.findFragmentById(R.id.f);Myfragment1 frag = (Myfragment1) findFragmentById;frag.setAa("xxxxxxxxxxxx靜態傳值xxx");}@Overridepublic void thank(String code) {// TODO Auto-generated method stubToast.makeText(MainActivity4.this, "成功接收到。。"+code, 1).show();} }

1 public class Myfragment5 extends Fragment { 2 private String code = "thank you"; 3 public MyListener listener; 4 // Fragment --> Activity:需要在Fragment中定義一個內部回調接口, 5 // 再讓包含該Fragment的Activity實現該回調接口。class MainActivity4 extends Activity implements MyListener 6 // 這樣Fragment可調用該回調方法將數據傳遞給Activity。 7 public interface MyListener { 8 public void thank(String code); 9 10 } 11 12 // 1.當Fragment被添加到Activity時候會回調這個方法,并且只調用一次 13 @Override 14 public void onAttach(Activity activity) { 15 // TODO Auto-generated method stub 16 listener = (MyListener) activity; 17 super.onAttach(activity); 18 } 19 //-------------------------------接收activity傳值-開始-------------------- 20 @Override 21 public View onCreateView(LayoutInflater inflater, ViewGroup container, 22 Bundle savedInstanceState) { 23 // TODO Auto-generated method stub 24 View view = inflater.inflate(R.layout.fragment, container, false); 25 TextView textView = (TextView) view.findViewById(R.id.text); 26 //獲取Bundle()傳過來的數據包 27 String text = getArguments().get("name") + ""; 28 textView.setText(text); 29 Toast.makeText(getActivity(), "已成功接收" + text, 1).show(); 30 31 //---------------------------------接收結束------------------- 32 33 Toast.makeText(getActivity(), "向ACtivity發送" + code, 1).show(); 34 35 listener.thank(code); 36 37 return view; 38 } 39 }
Fragment與Activity通信 (1)Fragment可以調用getActivity()方法獲取它所在的Activity; (2)Activity可以調用FragmentManager的findFragmentById()或者findFragmentByTag()方法獲取Fragment。 Activity --> Fragment:在Activity中創建Bundle數據包,并調用Fragment的setArguments(Bundle bundle)方法,然后在Fragment中使用getArguments()獲取Bundle數據包。 Fragment --> Activity:需要在Fragment中定義一個內部回調接口,再讓包含該Fragment的Activity實現該回調接口。這樣Fragment可調用該回調方法將數據傳遞給Activity。

?

?

將數據(這里是字符串 code) 從Fragment 傳給 Activity: 1.定義一個接口 MyListener,里面定義一個無方法體的方法thank( String str); 2.創建 MyListener對象 listener; 3.重寫方法 onAttach(Activity activity);將activity強制轉換為MyListener并賦值給 listener; 4.在方法 onCreateView中寫上 listener.thank(code); 實際上就是把數據 code 傳遞給了 activity!

?

















轉載于:https://www.cnblogs.com/my334420/p/6719939.html

總結

以上是生活随笔為你收集整理的Android攻城狮fragment的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。