如何从Android中的片段单击按钮打开片段

我的HomeFragment上有一些按钮,我想在片段上点击按钮打开片段。 像导航这样的东西。 我正在尝试使用波纹管代码,但没有奏效。 请帮忙 ! 我对android很新,并试图学习新东西。

这是我的代码

import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class HomeFragment extends Fragment { public HomeFragment(){} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_home, container, false); Button aboutBtn = (Button) rootView.findViewById(R.id.aboutusButton); Button phonebookBtn = (Button) rootView.findViewById(R.id.phbookButton); Button schemeBtn = (Button) rootView.findViewById(R.id.schemeButton); Button loanBtn = (Button) rootView.findViewById(R.id.loanButton); Button serviceBtn = (Button) rootView.findViewById(R.id.serviceButton); Button devBtn = (Button) rootView.findViewById(R.id.devButton); aboutBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Launching new Activity on selecting single List Item Intent i = new Intent(getActivity(), AboutFragment.class); startActivity(i); } }); phonebookBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Launching new Activity on selecting single List Item Intent j = new Intent(getActivity(), PhoneBookFragment.class); startActivity(j); } }); schemeBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Launching new Activity on selecting single List Item Intent k = new Intent(getActivity(), HomeFragment.class); startActivity(k); } }); loanBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Launching new Activity on selecting single List Item Intent l = new Intent(getActivity(), RemittanceFragment.class); startActivity(l); } }); serviceBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Launching new Activity on selecting single List Item Intent m = new Intent(getActivity(), ServiceFragment.class); startActivity(m); } }); devBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Launching new Activity on selecting single List Item Intent n = new Intent(getActivity(), AboutDeveloper.class); startActivity(n); } }); return rootView; } } 

我正在寻找像波纹管代码,但不知道如何使代码与我的代码一起工作。

 Button aboutBtn = (Button) v.findViewById(R.id.aboutButton); aboutBtn.setOnClickListener(this); Button homeBtn = (Button) v.findViewById(R.id.homeButton); homeButton.setOnClickListener(this); Button serviceBtn = (Button) v.findViewById(R.id.serviceButton); serviceBtn.setOnClickListener(this); @Override public void onClick(View view) { Fragment fragment = null; switch (view.getId()) { case aboutButton: fragment = new AboutFragment(); break; case homeBtn: fragment = new PhonebookFragment(); break; case serviceBtn: fragment = new ServiceFragment(); break; default: fragment = new HomeFragment(); break; } } 

您可以在按钮单击时使用FragmentTransaction替换片段。 像这样的东西:

  Fragment someFragment = new SomeFragment(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_container, someFragment ); // give your fragment container id in first parameter transaction.addToBackStack(null); // if written, this transaction will be added to backstack transaction.commit(); 

了解在此处执行片段事务。

码:

  package com.rupomkhondaker.sonalibank; import android.app.Fragment; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class HomeFragment extends Fragment implements View.OnClickListener { public HomeFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_home, container, false); Button aboutBtn = (Button) rootView.findViewById(R.id.aboutusButton); Button phonebookBtn = (Button) rootView.findViewById(R.id.phbookButton); aboutBtn.setOnClickListener(this); phonebookBtn.setOnClickListener(this); return rootView; } @Override public void onClick(View view) { Fragment fragment = null; switch (view.getId()) { case R.id.aboutusButton: fragment = new AboutFragment(); replaceFragment(fragment); break; case R.id.phbookButton: fragment = new PhoneBookFragment(); replaceFragment(fragment); break; } } public void replaceFragment(Fragment someFragment) { FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.frame_container, someFragment); transaction.addToBackStack(null); transaction.commit(); } } 

我有一个简单的伎俩! 这是MainActivity中的代码:

 Intent intent=new Intent(getApplicationContext(),Main2Activity.class); intent.putExtra("pos",1); startActivity(intent); Intent intent1=new Intent(getApplicationContext(),Main2Activity.class); intent1.putExtra("pos",2); startActivity(intent1); 

在Main2Activity中,它是一个带有片段的NavigationDrawer

 Bundle extras; extras=getIntent().getExtras(); if(extras!=null) { position=extras.getInt("pos"); if(position==1) { fragment=new FragmentOne(); if(fragment !=null) { android.support.v4.app.FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.screen_area,fragment); fragmentTransaction.commit(); } } if(position==2) { fragment=new FragmentTwo(); if(fragment !=null) { android.support.v4.app.FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.screen_area,fragment); fragmentTransaction.commit(); } } }