首頁>技術>

,還是先建立一個Bean類,因為要傳陣列,所以要繼承一個Parcelable介面。

package com.example.app017_fragment03;import android.os.Parcel;import android.os.Parcelable;public class Bean implements Parcelable {    String name;    String city;    protected Bean(Parcel in) {        name = in.readString();        city = in.readString();    }    public static final Creator<Bean> CREATOR = new Creator<Bean>() {        @Override        public Bean createFromParcel(Parcel in) {            Bean bean=new Bean(in.readString(),in.readString());            return bean;        }        @Override        public Bean[] newArray(int size) {            return new Bean[size];        }    };    public Bean(String name, String city) {        super();        this.name = name;        this.city = city;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getCity() {        return city;    }    public void setCity(String city) {        this.city = city;    }    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(name);        dest.writeString(city);    }}

然後,就是在MainActivity新增程式碼了。

//我這裡讓這個類實現一個OnClickListner,這樣程式碼更清楚public class MainActivity extends AppCompatActivity implements View.OnClickListener {    ArrayList<Bean> data= new ArrayList<Bean>();//這就是等下要傳的陣列。    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);				//沒有外部資料,用一個for迴圈填充陣列。        for(int i=0;i<20;i++){            Bean bean=new Bean("name"+i,"city"+(20-i));            data.add(bean);        }        Button btn1=findViewById(R.id.btn_1);        Button btn2=findViewById(R.id.btn_2);        btn1.setOnClickListener(this);        btn2.setOnClickListener(this);    }    @Override    public void onClick(View v) {        Bundle bundle;//這個是資料傳導管理類        switch (v.getId()){            case R.id.btn_1:                bundle=new Bundle();            		//把資料集放到管理類的例項中                bundle.putParcelableArrayList("student",data);                BlankFragment blankFragment=new BlankFragment();                blankFragment.setArguments(bundle);//再把這個管理類放到fragment的引數裡                changeit(blankFragment);        }    }    private void changeit(Fragment fragment){        //這裡和RecyclerView一樣,都是有一個管裡類,這裡得到一個管理類物件。        FragmentManager fragmentManager=getSupportFragmentManager();      //這個和資料庫裡差不多,例項化一個trasaction處理事物。        FragmentTransaction transaction=fragmentManager.beginTransaction();      //替換掉原有的framelayout介面物件        transaction.replace(R.id.framelayout,fragment);      //這裡是把當前transaction推入到一個返回棧裡,這樣點返回的時候能返回到剛剛呼叫的介面        transaction.addToBackStack(null);      //事物的提交        transaction.commit();    }

然後就是在一個fragment類裡把這個資料讀出來。

public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        // Inflate the layout for this fragment  			//得到當前介面例項        View v=inflater.inflate(R.layout.fragment_blank, container, false);  			//從例項裡得到資料管理例項        Bundle bundle=getArguments();  			//從管裡實例裡得到資料集        ArrayList<Bean> data=bundle.getParcelableArrayList("student");  			//我這裡是把整個資料集的內容直接在log裡打印出來了。        for(int i=0;i<data.size();i++){            Bean bean=data.get(i);            Log.e("liao", "onCreateView: "+bean.getName()+" and "+bean.getCity());        }        return v;    }

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 揭開程序的概念、狀態、通訊的迷霧。看完瞬間豁然開朗