2017-02-21 3 views
1

Ich habe eine Klasse namens MainActivity.java, diese Java enthält Navigations-Barcode.Wie wird der Navigationsbarcode wiederverwendet?

Wenn ich eine andere Aktivität mit dem Namen Contact.java erstellen möchte und dort auch den Navigations-Barcode enthält. Wie verwende ich den Navigations-Barcode von MainActivity.java zu Contact.java? Kann ich eine Klasse erstellen, um sie zu lösen?

Hier ist mein Code:

package com.thisistap.isuper.www.contactbook; 
 

 
import android.content.Intent; 
 
import android.os.Bundle; 
 
import android.view.View; 
 
import android.support.design.widget.NavigationView; 
 
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.view.MenuItem; 
 
import android.widget.Button; 
 
import android.widget.TabHost; 
 
import com.thisistap.isuper.www.contactbook.nav.*; 
 

 
public class MainActivity extends AppCompatActivity 
 
     implements NavigationView.OnNavigationItemSelectedListener { 
 
    private Button contact_button; 
 
    private TabHost mTabHost = null; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 
     // defined elements from layout (it can be modified) 
 
     contact_button = (Button) findViewById(R.id.contact_button); 
 

 
     // --- [Start] defined elements from Navigation Bar (it cannot be modified from here) --- 
 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
 
     setSupportActionBar(toolbar); 
 
     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); 
 
     // --- [End] defined elements from Navigation Bar (it cannot be modified from here) --- 
 

 
     // --- [Start] Button Group --- 
 
     contact_button.setOnClickListener(new Button.OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 
       Intent myIntent = new Intent(MainActivity.this,Contact.class); 
 
       MainActivity.this.startActivity(myIntent); 
 
      } 
 
     }); 
 
     // --- [End] Button Group --- 
 
    } 
 

 
    // --- [Start] Navigation Bar Action (it cannot be modified from here) --- 
 
    @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 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(); 
 
     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) { 
 
      Intent myIntent = new Intent(MainActivity.this,Contact.class); 
 
      MainActivity.this.startActivity(myIntent); 
 
     } else if (id == R.id.nav_gallery) { 
 

 
     } else if (id == R.id.nav_slideshow) { 
 

 
     } else if (id == R.id.nav_manage) { 
 

 
     } else if (id == R.id.nav_share) { 
 

 
     } else if (id == R.id.nav_send) { 
 

 
     } 
 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
 
     drawer.closeDrawer(GravityCompat.START); 
 
     return true; 
 
    } 
 
    // --- [End] Navigation Bar Action (it cannot be modified from here) --- 
 
}

Antwort

0

Ich schlage vor, Sie Ihre Aktivitäten von einer Basisaktivität extendig und Ihre gemeinsame Logik in diese Eltern umzusetzen.

0

Tun Sie das einfach - Nehmen Sie all Ihre Schublade Code in einer BaseActivity und in XML von BaseActivity Put DrawerLayout als Elternteil zusammen mit einem Container (wie Sie es für Fragmente tun) und NavigationView. Sie können auch auf this antworten. Es behandelt das gleiche Problem.

Erweitern Sie BaseActivity dann zu Ihrer MainActivity und blasen Sie sie statt in setContentView() im Container Ihrer BaseActivity auf.

public class BaseActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    // --- [Start] defined elements from Navigation Bar (it cannot be modified from here) --- 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    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); 
    // --- [End] defined elements from Navigation Bar (it cannot be modified from here) --- 

} 

// --- [Start] Navigation Bar Action (it cannot be modified from here) --- 
@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 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(); 
    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) { 
     Intent myIntent = new Intent(MainActivity.this,Contact.class); 
     MainActivity.this.startActivity(myIntent); 
    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
// --- [End] Navigation Bar Action (it cannot be modified from here) --- 
} 

Dann in Ihrem MainActivity erweitern -

public class MainActivity extends BaseActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FrameLayout containerParent = (FrameLayout) findViewById(R.id.container); 
    getLayoutInflater().inflate(R.layout.activity_main, containerParent); 

contact_button = (Button) findViewById(R.id.contact_button); 
} 
    } 

Ihre BaseActivity XML so sein sollte -

<DrawerLayout ---> 
    <FrameLayout ---/> 
    <NavigationView-------/> 
</DrawerLayout/> 
Verwandte Themen