有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java片段不会显示在Mainactivity中,在我的活动片段中,内容仅在我单击工具栏时显示

要转到片段1,我需要得到片段2和下一个片段1。 我的代码有什么问题

这是我的片段

public class TodaysmemeFragement extends Fragment {


private RecyclerView recyclerView;
private DatabaseReference databaseReference;

private FloatingActionButton sharebutton;




@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {




  return inflater.inflate(R.layout.fragment_todaysmeme,container,false);
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

}

@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<Meme,MemeViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Meme, MemeViewHolder>(
            Meme.class,
            R.layout.meme_row,
            MemeViewHolder.class,
            databaseReference
    ) {
        @Override
        protected void populateViewHolder(MemeViewHolder viewHolder, final Meme model, final int position) {
            viewHolder.setTag(model.getTag());
            viewHolder.setDesc(model.getDesc());
            viewHolder.setImage(getActivity(),model.getImage());

            final String imageurl = model.getImage();

            View v = viewHolder.getmViews();

            FloatingActionButton f = (FloatingActionButton) v.findViewById(R.id.sharebutton);

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


                    URL url = null;
                    Bitmap image = null;
                    try {
                        url = new URL(imageurl);
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    }



                    try {
                        image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.putExtra(Intent.EXTRA_TEXT, model.getDesc());
                    Uri screenshotUri = null;
                    String path = null;
                    try {
                        path = MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), image, "", null);
                        screenshotUri  = Uri.parse(path);
                    } catch (Exception e) {
                        Log.d(e.getLocalizedMessage(),"dfsf");
                    }


                    intent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
                    intent.setType("image/*");
                    startActivity(Intent.createChooser(intent, "Share image via..."));

                }

            });
        }
    };

    recyclerView.setAdapter(firebaseRecyclerAdapter);

}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    getActivity().setTitle("Today's Meme");

    sharebutton = (FloatingActionButton) view.findViewById(R.id.sharebutton);

    databaseReference = FirebaseDatabase.getInstance().getReference("Today");
    recyclerView = (RecyclerView)view.findViewById(R.id.meme_list);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));


}


public static class MemeViewHolder extends RecyclerView.ViewHolder{
    View mView;
    public MemeViewHolder(View itemView)
    {
      super(itemView);
        mView = itemView;
    }

    public void setTag(String tag)
    {
        TextView post_tag = (TextView)mView.findViewById(R.id.post_tag);
            post_tag.setText(tag);
    }
    public void setDesc(String desc)
    {
     TextView post_desc = (TextView)mView.findViewById(R.id.post_desc);
        post_desc.setText(desc);
    }
    public void setImage(Context context,String image) {
        ImageView imageView = (ImageView) mView.findViewById(R.id.post_image);
        Picasso.with(context).load(image).into(imageView);

    }
    public View getmViews()
    {
        return this.mView;
    }




}
}

这是我的主要活动

<安卓>
public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

DatabaseReference databaseReference;
FirebaseAuth firebaseAuth;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

     Fragment fragment;
        fragment = new TodaysmemeFragement();
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_main, fragment)
                .commit();




   Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    firebaseAuth = FirebaseAuth.getInstance();
    if(firebaseAuth.getCurrentUser() == null)
    {
        finish();
        startActivity(new Intent(getApplicationContext(),LoginSignupActivity.class));
    }








    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);


    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

xml没有问题。但是碎片中的某些东西可以替代


共 (2) 个答案

  1. # 1 楼答案

    毕竟,我解决了问题。您必须删除recyclerView.sethasFixedSize(true);

  2. # 2 楼答案

    添加碎片事务开始事务

     Fragment fragment;
     fragment = new TodaysmemeFragement();
     FragmentManager fragmentManager = getFragmentManager();
     FragmentTransaction ft = fragmentManager.beginTransaction();
     ft.addToBackStack(null);
    
     ft.replace(R.id.main_content, fragment);
     ft.commit();