1

MainActivityには2つのボタンがあり、ボタンをクリックすると2つのフラグメントが同じページに表示されます.MacContactボタンをクリックすると表示されますが、PhoneContactボタンをクリックするともう一方を上書きします。私にとって重要なAndroidフラグメントはオーバーヘッドになります

MainActivity.java

public class MainActivity extends AppCompatActivity { 

Button itsMeContact,phoneContact; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    itsMeContact= (Button) findViewById(R.id.its_me_contact); 
    phoneContact= (Button) findViewById(R.id.phone_contact); 

    itsMeContact.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      FragmentManager manager = getFragmentManager(); 
      UserFragment userFragment = new UserFragment(); 
      FragmentTransaction transaction = manager.beginTransaction(); 
      transaction.add(R.id.frame_layout, userFragment, "userFragment"); 

      transaction.commit(); 
     } 
    }); 

    phoneContact.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FragmentManager manager = getFragmentManager(); 
      FragmentB fragmentB = new FragmentB(); 
      FragmentTransaction transaction = manager.beginTransaction(); 
      transaction.add(R.id.frame_layout, fragmentB, "fragg"); 

      transaction.commit(); 
     } 
    }); 

} 

} 

UserFragment.java

public class UserFragment extends Fragment { 
RecyclerView recyclerView ; 
UserAdapter userAdapter ; 
ArrayList<Person> arrayList ; 
private LinearLayoutManager layoutManager; 
Button itsMeContact,phoneContact; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.fragment_user,container,false); 


    recyclerView = view.findViewById(R.id.recycler_view); 
    itsMeContact= view.findViewById(R.id.its_me_contact); 


    layoutManager = new LinearLayoutManager(getActivity()); 
    layoutManager.scrollToPosition(0); 
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    recyclerView.setLayoutManager(layoutManager); 
    arrayList=new ArrayList<Person>(); 

    initial(); 

    return view; 
} 

private void initial() { 
    Factory.getInstance().user().enqueue(new Callback<List<User>>() { 
     @Override 
     public void onResponse(Call<List<User>> call, Response<List<User>> response) { 
      // textView.setText(response.body().get(0).name); 
      userAdapter= new UserAdapter(response.body(), getActivity()); 
      recyclerView.setAdapter(userAdapter); 

     } 

     @Override 
     public void onFailure(Call<List<User>> call, Throwable t) { 

     } 
    }); 

} 

} 

FragmentB.java

public class FragmentB extends Fragment { 
TextView textView; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.fragment_fragment_b,container,false); 
    textView=view.findViewById(R.id.textView); 
    textView.setText("naber"); 

    return view; 
} 

}

あなたのアドバイス!

ありがとうございました

マイアプリ: enter image description here

答えて

0

あなたは同じでframeLayout使用しなかった各フラグメントの取引: "R.id.frame_layoutを"。

"これはオーバーヘッドになる"のでこれは正常です。 2つのフラグメントを同じレイアウトで表示したい場合は、2つの異なるフレームレイアウトを使用する必要があります。

関連する問題