Fragment的添加:
思路:1.首先获取fragmentManager
getSupportFragmentManager();
2.开启一个事物。
supportFragmentManager.beginTransaction();
3.添加Fragment
Activity的代码:
package jy.com.fragment;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import jy.com.fragment.fg.OneFragment;
import jy.com.fragment.fg.TwoFragment;
public class MainActivity extends AppCompatActivity implements View.OnClickListener,OneFragment.OnFragmentInteractionListener {
private Toolbar toolbar;
private Button button;
private Button button2;
private RelativeLayout relative;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initFragment();
}
FragmentTransaction fragmentTransaction;
FragmentManager supportFragmentManager;
/**
* 1.
*/
private void initFragment() {
supportFragmentManager = getSupportFragmentManager();
}
private void initView() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
button = (Button) findViewById(R.id.button);
button2 = (Button) findViewById(R.id.button2);
relative = (RelativeLayout) findViewById(R.id.relative);
button.setOnClickListener(this);
button2.setOnClickListener(this);
}
public static OneFragment oneFragment;
TwoFragment twoFragment;
@Override
public void onClick(View v) {
fragmentTransaction = supportFragmentManager.beginTransaction();
//判断是否为空,不为空就隐藏当前fragment
if (oneFragment!=null){
fragmentTransaction.hide(oneFragment);
}
if (twoFragment!=null){
fragmentTransaction.hide(twoFragment);
}
switch (v.getId()) {
case R.id.button
if (null == oneFragment){
oneFragment = OneFragment.newInstance("明天考试,","考不好打死");
//实例化后添加
fragmentTransaction.add(R.id.relative,oneFragment);
}else {
//不为空就显示
fragmentTransaction.show(oneFragment);
}
break;
case R.id.button2:
if (null == twoFragment){
twoFragment = new TwoFragment();
fragmentTransaction.add(R.id.relative,twoFragment);
}else {
fragmentTransaction.show(twoFragment);
}
break;
}
fragmentTransaction.commit();
}
@Override
public void onFragmentInteraction(String data) {
button2.setText(data);
}
}
package jy.com.fragment;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by mwt on 2018/4/9.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Item> {
private Context context;
private ArrayList<String> arrayList;
public MyAdapter(Context context, ArrayList arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@Override
public int getItemCount() {
return arrayList.size();
}
/**
* item 具体条目 -》xml
* @param parent
* @param viewType
* @return
*/
@Override
public Item onCreateViewHolder(ViewGroup parent, int viewType) {
return new Item(LayoutInflater.from(context).inflate(R.layout.layout,null));
}
/**
* 给item 条目 绑定数据
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(Item holder, final int position) {
holder.textView.setText(arrayList.get(position));
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//3.使用
// paiam data:接收值
callBackLister.onClickLister(arrayList.get(position));
}
});
}
public class Item extends RecyclerView.ViewHolder{
private TextView textView;
public Item(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
/**
* 1.定义内部类接口
*/
public interface CallBackLister{
public void onClickLister(String data);
}
/*
* 2. 定义全局变量,并且对外 暴露使用CallBackLister接口 的方法
*/
private CallBackLister callBackLister;
// set 赋值
public void setCallBackLister(CallBackLister callBackLister) {
this.callBackLister = callBackLister;
}
}