blackfragment
package com.example.myapplication; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.fragment.app.Fragment; /** * A simple {@link Fragment} subclass. * Use the {@link BlankFragment1#newInstance} factory method to * create an instance of this fragment. */ public class BlankFragment1 extends Fragment { private static final String TAG = "BlankFragment1"; // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; // TODO: Rename and change types of parameters private String mParam1; private String mParam2; public BlankFragment1() { // Required empty public constructor } /** * Use this factory method to create a new instance of * this fragment using the provided parameters. * * @param param1 Parameter 1. * @param param2 Parameter 2. * @return A new instance of fragment BlankFragment1. */ // TODO: Rename and change types and number of parameters public static BlankFragment1 newInstance(String param1, String param2) { BlankFragment1 fragment = new BlankFragment1(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle=this.getArguments(); String string=bundle.getString("message"); Log.d(TAG,"onCreate: "+string) if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_blank1, container, false); } }
ItemFragment
package com.example.myapplication; import android.content.Context; import android.os.Bundle; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.myapplication.placeholder.PlaceholderContent; /** * A fragment representing a list of Items. */ public class ItemFragment extends Fragment { // TODO: Customize parameter argument names private static final String ARG_COLUMN_COUNT = "column-count"; // TODO: Customize parameters private int mColumnCount = 1; /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). */ public ItemFragment() { } // TODO: Customize parameter initialization @SuppressWarnings("unused") public static ItemFragment newInstance(int columnCount) { ItemFragment fragment = new ItemFragment(); Bundle args = new Bundle(); args.putInt(ARG_COLUMN_COUNT, columnCount); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mColumnCount = getArguments().getInt(ARG_COLUMN_COUNT); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_item_list, container, false); // Set the adapter if (view instanceof RecyclerView) { Context context = view.getContext(); RecyclerView recyclerView = (RecyclerView) view; if (mColumnCount <= 1) { recyclerView.setLayoutManager(new LinearLayoutManager(context)); } else { recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } recyclerView.setAdapter(new MyItemRecyclerViewAdapter(PlaceholderContent.ITEMS)); } return view; } }
MainActivity
package com.example.myapplication; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=findViewById(R.id.btn); button.setOnClickListener(this); Button button2=findViewById(R.id.btn2); button2.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.btn: Bundle bundle=new Bundle(); bundle.putString("message","我喜欢你"); BlankFragment1 bf=new BlankFragment1(); bf.setArguments(bundle); replaceFragment(bf); break; case R.id.btn2: replaceFragment(new ItemFragment()); } } private void replaceFragment(Fragment fragment) { FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction transaction=fragmentManager.beginTransaction(); transaction.replace(R.id.framelayout,fragment); transaction.addToBackStack(null); transaction.commit(); } }
MyItemRecyclerViewAdapter
package com.example.myapplication; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.myapplication.placeholder.PlaceholderContent.PlaceholderItem; import com.example.myapplication.databinding.FragmentItemBinding; import java.util.List; /** * {@link RecyclerView.Adapter} that can display a {@link PlaceholderItem}. * TODO: Replace the implementation with code for your data type. */ public class MyItemRecyclerViewAdapter extends RecyclerView.Adapter<MyItemRecyclerViewAdapter.ViewHolder> { private final List<PlaceholderItem> mValues; public MyItemRecyclerViewAdapter(List<PlaceholderItem> items) { mValues = items; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(FragmentItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); } @Override public void onBindViewHolder(final ViewHolder holder, int position) { holder.mItem = mValues.get(position); holder.mIdView.setText(mValues.get(position).id); holder.mContentView.setText(mValues.get(position).content); } @Override public int getItemCount() { return mValues.size(); } public class ViewHolder extends RecyclerView.ViewHolder { public final TextView mIdView; public final TextView mContentView; public PlaceholderItem mItem; public ViewHolder(FragmentItemBinding binding) { super(binding.getRoot()); mIdView = binding.itemNumber; mContentView = binding.content; } @Override public String toString() { return super.toString() + " '" + mContentView.getText() + "'"; } } }