2016-07-24 19 views
0

Fragmente 1:Wie zwischen den Fragmenten wechseln Tasten

public class homePage extends Fragment { 


private OnFragmentInteractionListener mListener; 
private View view; 

public homePage() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.fragment_home_page, container, false); 
    Button btnLogin = (Button) view.findViewById(R.id.login); 
    Button btnRegister = (Button) view.findViewById(R.id.register); 
    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      loginView(); 
     } 
    }); 
    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      registerView(); 
     } 
    }); 
    return view; 
} 


public static homePage newInstance() { 
    homePage fragment = new homePage(); 
    Bundle args = new Bundle(); 
    return fragment; 
} 


public void registerView(){} 
public void loginView(){} 


public interface OnFragmentInteractionListener { 

} 
} 

Acitivty:

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     homePage homepage = new homePage(); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, homepage) 
        .commit(); 
     } 
    } 




} 

Meine fragment1 verfügt über zwei Tasten mit dem "Login" von id und "registrieren". Wenn ich auf login klicke, gehe ich zu meiner fragment_login.xml und wenn ich auf register klicke, gehe ich zu meiner fragment_register.xml. Sollte ich diese Funktionen in meiner Aktivität oder in meinem Fragment erstellen? Und wie soll ich das machen? Ich bin ziemlich neu bei Android und ich versuche, diese grundlegenden Dinge atm zu lernen. Danke für die Hilfe :(

Anmeldung Kontext: "com.example.hoofdgebruiker.winkelskortrijk.login" Register Kontext: "com.example.hoofdgebruiker.winkelskortrijk.register"

Antwort

1

Sie müssen eine Mitteilung machen zwischen Fragment Objekte über ein Interface.

die Aktivität, die den Schalter zwischen Fragmenten machen muss implementieren, dass Interface.

Also, Ihre Klassen in Ihrem Fall muss wie folgt definiert werden. Dieser ist Ihre Interface, es hilft Ihnen, Ihre Aktivität zu sagen, dass eine Taste aus Ihrem Fragment geklickt wurde:

public interface HomeClickListener { 
    void onLoginClick(); 
    void onRegisterClick(); 
} 

Ihre Aktivität der obigen Schnittstelle, um benachrichtigt zu werden, implementieren muss, wenn auf eine Schaltfläche geklickt wurde:

public class HomeActivity extends Activity implements HomeClickListener { 

    void onLoginClick() { 
     // Your activity code to replace your current Fragment with your Login fragment 
    } 

    void onRegisterClick() { 
     // Your activity code to replace your current Fragment with your Register fragment 
    } 

} 

Ihr Fragment wird durch eine Aktivität gehostet, so dass Sie es einen Verweis haben müssen und informieren sie über eine Interface:

public class LoginFragment extends Fragment { 

    final HomeClickListener homeClickListener 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

     // This makes sure that the container activity has implemented 
     // the callback interface. If not, it throws an exception 
     try { 
      homeClickListener = (homeClickListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.fragment_home_page, container, false); 
     Button btnLogin = (Button) view.findViewById(R.id.login); 
     Button btnRegister = (Button) view.findViewById(R.id.register); 
     btnLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       homeClickListener.onLoginClick(); 
      } 
     }); 
     btnLogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       homeClickListener.onRegisterClick(); 
      } 
     }); 
     return view; 
    } 

} 

Weitere Informationen here.

Verwandte Themen