2016-06-21 11 views
0

Ich erstelle eine neue Beispiel-App mit Android Studio und ich bekomme eine Probe mit extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener.Wie Seite wie Fragment mit Android Studio Standard Beispiel aufrufen

Wie kann ich eine Seite aufrufen (wie mit Fragment), wenn Menüelement auf Schublade Menü geklickt?

Dies ist mein Code

package com.bertho.testapp; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.NavigationView; 
import android.support.design.widget.Snackbar; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Toast; 

import java.util.List; 

import model.Movie; 
import model.MoviesResponse; 
import rest.ApiClient; 
import rest.ApiInterface; 
import retrofit2.Call; 
import retrofit2.Callback; 
import retrofit2.Response; 

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

    private static final String TAG = MainActivity.class.getSimpleName(); 

    private final static String API_KEY = "1112223333"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

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

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

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

     if (id == R.id.nav_camera) { 
      showToast("Menu Import"); 
     } else if (id == R.id.nav_gallery) { 
      showToast("Menu Galery"); 
     } else if (id == R.id.nav_slideshow) { 
      showToast("Menu Slide Show"); 
     } else if (id == R.id.nav_manage) { 
      showToast("Menu Tools"); 
     } else if (id == R.id.nav_share) { 
      showToast("Menu Share"); 
     } else if (id == R.id.nav_send) { 
      showToast("Menu Send"); 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 



    public void sampleConnect() { 

     ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class); 

     Call<MoviesResponse> call = apiService.getTopRatedMovies(API_KEY); 

     call.enqueue(new Callback<MoviesResponse>() { 
      @Override 
      public void onResponse(Call<MoviesResponse> call, Response<MoviesResponse> response) { 
       int statusCode = response.code(); 
       List<Movie> movies = response.body().getResults(); 
       Log.d(TAG, "NUMBER OF MOVIES RECEIVED : " + movies.size()); 
      } 

      @Override 
      public void onFailure(Call<MoviesResponse> call, Throwable t) { 
       // Log error here since request failed 
       Log.e(TAG, t.toString()); 
      } 
     }); 
    } 


    public void showToast(String output){ 
     Toast.makeText(this.getBaseContext(), output, Toast.LENGTH_SHORT).show(); 
    } 
} 

Wie bekomme ich mir eine neue Seite für jedes Menü auf dem Menü aufrufen kann ich angeklickt ( onNavigationItemSelected) wie ein Fragment mit? Oder sollte ich ersetzen

extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener

mit

extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener

für meinen Fall?

Bitte helfen

+0

tun Sie f haben ramelayout indside activity_main? – Sreekanth

+0

@Sreekanth meine activity_main: http://pastebin.com/Fx7S6h2E –

+0

Sie sollten framelayout haben Sie Ansichten hinzufügen mit Fragment – Sreekanth

Antwort

1

Versuchen Sie, diese Schnipsel

dieses Schubladeninnen Layout

<FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

Java

erstellen Objekt von Fragment zu xml hinzufügen

Fragment fragment = new HomeFragment(); 

     if (fragment != null) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.frame_container, fragment).commit(); 

      // update selected item and title, then close the drawer 
      mDrawerList.setItemChecked(position, true); 
      mDrawerList.setSelection(position); 
      setTitle(navMenuTitles[position]); 
      mDrawerLayout.closeDrawer(mDrawerList); 
+0

Sie haben Lösungen? – Sreekanth

+0

Hai @Sreekanth Entschuldigung für die späte Antwort. Ich war wieder online. Ok, ich werde versuchen in mein Layout FrameLayout einzubauen. Wenn ich Hindernisse finde, werde ich Sie wieder kontaktieren –

+0

Danke .... funktioniert gut .. @Sreekanth –

Verwandte Themen