2015-09-21 12 views
8

Mam przycisk na mojej HomeFragment, chcę otworzyć Fragment na przycisku kliknij fragment. Coś jak Nawigacja. Próbuję z kodem języka, ale nie zadziałał. Proszę pomóż ! Jestem bardzo nowy dla Androida i próbuję uczyć się nowych rzeczy.Jak otworzyć Fragment na przycisku kliknięcie z fragmentu w Androidzie

Oto mój kod

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; 
    } 
} 

szukam czegoś podobnego kodu poniżej, ale nie wiem jak zrobić kod działa z mojego kodu.

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; 

    } 
} 
+3

nie wiem głos, dlaczego ludzie się na nim? jeśli nie możesz pomóc, proszę nie łamać sobie serca :( – Firefog

Odpowiedz

14

Możesz zastąpić fragment za pomocą FragmentTransaction po kliknięciu przycisku. Coś takiego:

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(); 

Dowiedz się o performing fragment transactions here.

kod:

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(); 
    } 


} 
+0

Czy możesz podać przykładową implementację w moim kodzie za pomocą odpowiedzi Proszę? – Firefog

+0

@Firefog czekaj.Tylko edytuję –

+0

Bardzo dziękuję – Firefog

Powiązane problemy