J'ai deux fichiers xml un activity_home.xml avec tiroir de navigation et ses fragments et un autre carlist.xml sans tiroir de navigation. J'ai besoin de la même barre d'outils avec dans mon carlist.xml. Je suis complètement confus.Je veux importer l'icône du tiroir de navigation avec le fichier xml de la barre d'outils dans un fichier XML différent sans changer le contenu
Voici mon activity_home.xml avec d'autres fragments
activity_home.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@drawable/heat3"
tools:openDrawer="start">
<include
layout="@layout/app_bar_home"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_home"
android:background="#4f0e0d0e"
app:itemTextColor="@android:color/white"
app:itemIconTint="@android:color/white"
app:menu="@menu/activity_home_drawer" />
c'est mon fichier home.java
package game.bakarunlimited.com.offwash;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
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.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;
import game.bakarunlimited.com.offwash.Common.Common;
import game.bakarunlimited.com.offwash.Interface.ItemClickListener;
import game.bakarunlimited.com.offwash.Model.Category;
import game.bakarunlimited.com.offwash.ViewHolder.MenuViewHolder;
public class Home extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
FirebaseDatabase database;
DatabaseReference category;
TextView txtFullName;
RecyclerView recycler_menu;
RecyclerView.LayoutManager layoutManager;
FirebaseRecyclerAdapter<Category,MenuViewHolder> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Menu");
setSupportActionBar(toolbar);
//Init firebase
database = FirebaseDatabase.getInstance();
category = database.getReference("Category");
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent cartIntent = new Intent(Home.this,Cart.class);
startActivity(cartIntent);
}
});
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);
//Set Name For user
View headerView = navigationView.getHeaderView(0);
txtFullName= (TextView)headerView.findViewById(R.id.txtFullName);
txtFullName.setText(Common.currentUser.getName());
//load menu
recycler_menu = (RecyclerView)findViewById(R.id.recycler_menu);
recycler_menu.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recycler_menu.setLayoutManager(layoutManager);
loadMenu();
}
private void loadMenu(){
adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(Category.class,R.layout.menu_item,MenuViewHolder.class,category) {
@Override
protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int position) {
viewHolder.txtMenuName.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.imageView);
final Category clickItem = model;
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
//Get Category Id and send them to new Activity
Intent foodList = new Intent(Home.this,CarList.class);
//Because CategoryId is key, so we just get key of this item
foodList.putExtra("CategoryId",adapter.getRef(position).getKey());
startActivity(foodList);
}
});
}
};
recycler_menu.setAdapter(adapter);
}
@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.home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
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_menu) {
// Handle the camera action
} else if (id == R.id.nav_cart) {
Intent cartIntent = new Intent(Home.this,Cart.class);
startActivity(cartIntent);
} else if (id == R.id.nav_orders) {
Intent orderIntent = new Intent(Home.this,OrderStatus.class);
startActivity(orderIntent);
} else if (id == R.id.nav_log_out) {
//logout
Intent signin = new Intent(Home.this,Signin.class);
signin.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(signin);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
et j'ai besoin que la barre d'outils avec tiroir de navigation dans cette activity_carlist.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="game.bakarunlimited.com.offwash.CarList">
<com.mancj.materialsearchbar.MaterialSearchBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/searchBar"
android:layout_alignParentTop="true"
app:mt_speechMode="false"
app:mt_hint="Enter Your Food"
/>
<android.support.v7.widget.RecyclerView
android:layout_below="@id/searchBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler_food"
android:scrollbars="vertical"
/>
Et fichier java pour l'carliste est
package game.bakarunlimited.com.offwash;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.mancj.materialsearchbar.MaterialSearchBar;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
import game.bakarunlimited.com.offwash.Interface.ItemClickListener;
import game.bakarunlimited.com.offwash.Model.Food;
import game.bakarunlimited.com.offwash.ViewHolder.FoodViewHolder;
public class CarList extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
FirebaseDatabase database;
DatabaseReference foodList;
String categoryId="";
FirebaseRecyclerAdapter<Food,FoodViewHolder> adapter;
// search functionality
FirebaseRecyclerAdapter<Food,FoodViewHolder> searchAdapter;
List<String> suggestList = new ArrayList<>();
MaterialSearchBar materialSearchBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_carlist);
//Init firebase
database = FirebaseDatabase.getInstance();
foodList = database.getReference("Foods");
//load menu
recyclerView = (RecyclerView)findViewById(R.id.recycler_food);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
//get intent here
if(getIntent()!= null)
categoryId = getIntent().getStringExtra("CategoryId");
if(!categoryId.isEmpty()&& categoryId != null)
{
loadListFood(categoryId);
}
//search
materialSearchBar = (MaterialSearchBar)findViewById(R.id.searchBar);
materialSearchBar.setHint("Enter your food");
loadSuggest();
materialSearchBar.setLastSuggestions(suggestList);
materialSearchBar.setCardViewElevation(10);
materialSearchBar.addTextChangeListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
List<String> suggest = new ArrayList<String>();
for(String search:suggestList)
{
if(search.toLowerCase().contains(materialSearchBar.getText().toLowerCase()))
suggest.add(search);
}
materialSearchBar.setLastSuggestions(suggest);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
materialSearchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() {
@Override
public void onSearchStateChanged(boolean enabled) {
//on search bar is closed
//Restore original suggest adapter
if(!enabled)
recyclerView.setAdapter(adapter);
}
@Override
public void onSearchConfirmed(CharSequence text) {
//on search finish
// show the result of the adapter
startSearch(text);
}
@Override
public void onButtonClicked(int buttonCode) {
}
});
}
private void startSearch(CharSequence text) {
searchAdapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
Food.class,
R.layout.car_item,
FoodViewHolder.class,
foodList.orderByChild("Name").equalTo(text.toString())
) {
@Override
protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) {
viewHolder.food_name.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.food_image);
final Food local = model;
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
Intent foodDetail = new Intent(CarList.this,CarDetail.class);
foodDetail.putExtra("FoodId",searchAdapter.getRef(position).getKey());//send the food id to new Activity
startActivity(foodDetail);
}
});
}
};
recyclerView.setAdapter(searchAdapter);//set adapter for recyclerview
}
private void loadSuggest() {
foodList.orderByChild("MenuId").equalTo(categoryId)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot:dataSnapshot.getChildren())
{
Food item = postSnapshot.getValue(Food.class);
suggestList.add(item.getName());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void loadListFood(String categoryId) {
adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(Food.class,
R.layout
.car_item,
FoodViewHolder.class,
foodList.orderByChild("MenuId").equalTo(categoryId) // like : Select * from foods where MenuId
) {
@Override
protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) {
viewHolder.food_name.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.food_image);
final Food local = model;
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
Intent foodDetail = new Intent(CarList.this,CarDetail.class);
foodDetail.putExtra("FoodId",adapter.getRef(position).getKey());//send the food id to new Activity
startActivity(foodDetail);
}
});
}
};
// Set Adapter
recyclerView.setAdapter(adapter);
}
}
Veuillez ne pas utiliser textspeak. Utilisez les mots normaux. – Moritz