我想知道我是否应该把下面的activity转换成一个片段?我必须为此做什么(如果你认为这是有用的)?我仍然没有真正理解为什么要使用碎片。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener;
public class Selection_Softdrinks_Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_selection_softdrinks);
BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
bottomNav.setOnNavigationItemSelectedListener(navListener);
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Activity selectedActivity = null;
switch (item.getItemId()) {
case R.id.nav_info:
Intent intent_Selection = new Intent(getApplicationContext(), Info_Activity.class);
startActivity(intent_Selection);
break;
}
return true;
}
};
}
我将非常感谢您的每一个评论,并感谢您的帮助。
嗯。只要Android团队在导航组件上努力投资,使用碎片更好。
只是把主要的activity作为一个activity,其他的一切都作为一个碎片。
为了把你的activity转换成一个碎片,我只会把activity的遗产替换成碎片并解决问题。如果你自己去做,你会在如何使用碎片方面学得更好。
以下链接可能会对您有所帮助:
https://developer.android.com/guide/components/fragments?gclid=eaiaiqobchmil6bojr2d6wivwysrch1xoqrkeaayasaaegig0_d_bwe&gclsrc=aw.ds
根据谷歌最佳实践和建议,他们建议开发人员拥有一个包含多个片段的主activity,每个片段代表一个屏幕,当用户从一个屏幕导航到另一个屏幕时,您可以在片段之间切换到另一个片段。在你的情况下,让我们假设这是你的主人activity。在activity_selection_softdrinks中添加以下内容:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/navigation_bar"
android:id="@+id/container_frame"/>
返回到selection_softdrinks_activity.并执行以下操作:
BottomNavigationView.OnNavigationItemSelectedListener selectedListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment selectedFragment = null;
switch (menuItem.getItemId()){
case R.id.nav_library:
selectedFragment = new LibraryFragment();
break;
case R.id.nav_my_music:
selectedFragment = new MyMusicFragment();
break;
case R.id.nav_search:
selectedFragment = new SearchFragment();
break;
}
fragmentManager.beginTransaction()
.replace(containerFrame.getId(), selectedFragment)
.commit();
return true;
}
};
其中LibraryFragment,MyMusicFragment,SearchFragment是您在前面已经创建的普通片段。