【问题标题】:Android fragments looks overheadAndroid 片段看起来开销很大
【发布时间】:2017-10-14 22:21:14
【问题描述】:

MainActivity 有 2 个按钮,当我单击按钮时,我希望 2 个片段出现在同一页面中。但是当我单击它的 MeContact 按钮时,它会出现,但是当我单击 PhoneContact 按钮时,我会覆盖另一个.

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

【问题讨论】:

    标签: java android android-fragments android-recyclerview android-fragmentactivity


    【解决方案1】:

    您所做的每个 Fragment 事务都使用相同的框架布局:“R.id.frame_layout”。

    所以如果“它看起来是开销”,这是正常的。如果你想让 2 个片段显示在同一个布局中,你应该使用 2 个不同的框架布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多