Saya sedang mengembangkan aplikasi yang berisi 2 fragmen dan saya ingin menampilkan hide sesuai kebutuhan saya. Kode berikut memiliki contoh sederhana dari masalah saya. Fragmentactivity sederhana ini berisi 1 tombol dan satu listfragment.
Contoh sederhana ini bekerja dengan sempurna. tapi saya tidak puas dengan show hide fragment. Jika Anda menghapus layout.setVisibility (View.GONE); dari kode lalu ft.hide (f); tidak akan menyembunyikan fragmen. Sebenarnya kami tidak menyembunyikan fragmen kami menyembunyikan wadah.
Pertanyaan saya adalah, apakah ini cara untuk menampilkan fragmen tersembunyi? Jika tidak, mohon jelaskan dengan contoh teruji Cara menyembunyikan dan menampilkan Fragmen karena banyak orang menghadapi masalah ini.
public class MainActivity extends FragmentActivity implements OnClickListener {
Fragment1 f;
Button b;
LinearLayout layout;
Fragment myf;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
layout = (LinearLayout) findViewById(R.id.ll);
f = new Fragment1();
}
@Override
public void onClick(View v) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
if (f.isHidden()) {
ft.show(f);
layout.setVisibility(View.VISIBLE);
b.setText("Hide");
} else {
ft.hide(f);
b.setText("Show");
layout.setVisibility(View.GONE);
}
ft.commit();
// TODO Auto-generated method stub
}
android
android-fragments
show-hide
abidkhan303
sumber
sumber
Jawaban:
Jangan mengacaukan bendera visibilitas penampung - FragmentTransaction.hide / show melakukannya secara internal untuk Anda.
Jadi cara yang benar untuk melakukannya adalah:
ATAU jika Anda menggunakan android.support.v4.app.Fragment
sumber
android.R.animator.fade_in
, danandroid.R.animator.fade_out
?Selain itu, Anda dapat melakukannya di Fragment (misalnya saat mendapatkan data server gagal):
sumber
getView()
- hatilahnull
saat belum diinisialisasi.Hai, Anda melakukannya dengan menggunakan pendekatan ini, semua fragmen akan tetap berada di wadah setelah ditambahkan pada awalnya dan kemudian kami hanya mengungkapkan fragmen yang diinginkan dan menyembunyikan yang lain di dalam wadah.
Silakan lihat https://github.com/codepath/android_guides/wiki/Creating-and-Using-Fragments untuk info lebih lanjut. Saya harap saya bisa membantu siapa pun. Meskipun ini adalah pertanyaan lama.
sumber
sumber
Coba ini:
sumber
Dari kode saya, dibandingkan dengan solusi di atas, cara paling sederhana adalah dengan mendefinisikan tata letak yang berisi fragmen, lalu Anda dapat menyembunyikan atau menampilkan fragmen dengan mengontrol atribut tata letak yang selaras dengan cara pandang umum. Tidak diperlukan kode tambahan dalam kasus ini dan atribut penerapan tambahan dari fragmen dapat dipindahkan ke tata letak luar.
sumber
Ini berhasil untuk saya
sumber
jawaban di sini benar dan saya suka @Jyo the Whiff ide dari pertunjukan dan sembunyikan implementasi fragmen kecuali cara yang dia miliki saat ini akan menyembunyikan fragmen saat pertama kali dijalankan jadi saya menambahkan sedikit perubahan karena saya menambahkan cek dan pertunjukan yang ditambahkan fragmen jika belum
sumber
Di onCreate, setelah setContentView, saya menyembunyikan dua fragmen dan memasukkannya ke pengelola fragmen, tetapi saya tidak menyembunyikan fragmen pertama yang akan berfungsi sebagai rumah.
Ref: https://medium.com/@oluwabukunmi.aluko/bottom-navigation-view-with-fragments-a074bfd08711
sumber
Saya mungkin sangat terlambat tetapi itu bisa membantu seseorang di masa depan.
Jawaban ini merupakan modifikasi untuk
mangu23
menjawabSaya hanya menambahkan loop for untuk menghindari pengulangan dan untuk dengan mudah menambahkan lebih banyak fragmen tanpa kode boilerplate.
Pertama-tama kita membutuhkan daftar fragmen yang harus ditampilkan
Kemudian kita perlu mengisinya dengan fragmen kita
Dan kami membutuhkan cara untuk mengetahui fragmen mana yang dipilih dari daftar, jadi kami membutuhkan
getFragmentIndex
fungsiDan akhirnya,
displayFragment
caranya akan seperti ini:Dengan cara ini, kita dapat memanggil
displayFragment(homeFragment)
misalnya.Ini secara otomatis akan menampilkan
HomeFragment
dan menyembunyikan fragmen lain dalam daftar.Solusi ini memungkinkan Anda untuk menambahkan lebih banyak fragmen ke
fragmentList
tanpa harus mengulangiif
pernyataan didisplayFragment
versi lama .Saya berharap seseorang akan merasakan manfaatnya.
sumber