【问题标题】:Show fragment when menu item is clicked in new NavigationView在新的 NavigationView 中单击菜单项时显示片段
【发布时间】:2020-03-14 20:04:21
【问题描述】:

我是使用 Android Studio 创建应用程序的初学者,当我单击导航菜单项时,我想显示不同的片段。我搜索了教程,但我没有找到如何使用它。

例如,在模板中,当我点击相机时,它应该显示一个相机片段,画廊会显示一个画廊片段,等等:

public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_camara) {
        // Handle the camera action
        // How do I display fragment?
    } else if (id == R.id.nav_gallery) {

    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

【问题讨论】:

标签: android fragment


【解决方案1】:

您的活动应包含FrameLayout。在onNavigationItemSelected() 中为相机、画廊等创建Fragment。然后将此片段放入FrameLayout。

public boolean onNavigationItemSelected(MenuItem item) {
    Fragment newFragment; // This is the fragment you want to put into the FrameLayout

    int id = item.getItemId();
    if (id == R.id.nav_camara) {
        newFragment = new CameraFragment();
    } else if (id == R.id.nav_gallery) {
        newFragment = new GalleryFragment();
    } else if (id == R.id.nav_slideshow) {
        // [...]
    }

    // Let's put the new fragment into the FrameLayout
    // If you use the support action bar, use getSupportFragmentManager(), else getFragmentManager()
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.fragment_container, newFragment); // R.id.fragment_container = FrameLayout ID
    transaction.commit();
}

这有帮助吗?

【讨论】:

  • @SwamyVeera 正如他在答案的 cmets 中所解释的那样,您需要将该行替换为您活动的 XML 布局中 FrameLayout 的任何 id。
【解决方案2】:

你可以这样试试,

final StorageReference filePath = UserProfileImagesRef.child("Profile Images").child(currentUserID + ".jpg");
filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener < UploadTask.TaskSnapshot > () {
    @Override
    public void onComplete(@NonNull Task < UploadTask.TaskSnapshot > task) {
        if (task.isSuccessful()) {
            filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener < Uri > () {
                @Override
                public void onSuccess(Uri uri) {
                    String downloadUrl = uri.toString();

                    RootRef.child("Users").child(currentUserID).child("image").setValue(downloadUrl).addOnCompleteListener(new OnCompleteListener < Void > () {
                        @Override
                        public void onComplete(@NonNull Task < Void > task) {
                            if (task.isSuccessful()) {
                                loadingBar.dismiss();
                                Toast.makeText(SettingActivity.this, "Your picture Saved successfully", Toast.LENGTH_SHORT).show();

                            } else {
                                Toast.makeText(SettingActivity.this, "Problem occurred while tryng to save your picture..", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
            });

        } else {
            Toast.makeText(SettingActivity.this, "Your picture did NOT saved", Toast.LENGTH_SHORT).show();
            loadingBar.dismiss();
        }
    }
});

【讨论】:

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