문제가 해결되었을 때 다른 메뉴가 나타납니다. 문제가있는 모든 항목을 게시하는이 규칙의 규칙을 위반하는지 잘 모르겠습니다. ,하지만 여기에 다시 간다. 내 단편 안에서 액션 바에 아이콘 메뉴를 추가하려고한다. 부모 액션에 액션 바 메뉴가 없다는 것을 알기 때문에, 내 메뉴를 대체하려고하지 않는다. 왜냐하면 나는 DrawerLayout을 사용하여 목록 메뉴를 서랍에 넣었으므로 모든 것이지만 일부 특정 조각에서는 일부 작업 표시 줄 아이콘 메뉴를 표시하고 싶습니다. 게시하기 전에 포럼에서 검색했으나 할 수있는 것보다 찾지 못했습니다. 도와주세요, 무슨 일이 일어나고 있는지 모르겠으니, 나는 두 stepts을 표시하고 다른 사람의 게시물을 읽고 파편에 대한 작업 표시 줄 메뉴를, 심지어 두 가지 differents 조각에서 안드로이드 스튜디오에 의해 만들어진 기본 menu.xml을 사용해 보았습니다 ,하지만 어떤 이유로 메뉴가 프라임에 표시되지 않습니다. gments 작업 표시 줄, 내가 먼저 내 부모 활동에 뭔가를해야한다면 모르겠지만, 여기에 내 코드 활동과 Fragmen DrawerLayout 메뉴 목록조각 모음에있는 작업 표시 줄 아이콘 메뉴 문제
import java.util.ArrayList
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
private String[] titulos;
private DrawerLayout NavDrawerLayout;
private ListView NavList;
private ArrayList<Item_objct> NavItms;
private TypedArray NavIcons;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
Fragment ventas;
NavigationAdapter NavAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity__main);
NavDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavList = (ListView) findViewById(R.id.lista);
View header = getLayoutInflater().inflate(R.layout.header, null);
NavList.addHeaderView(header);
NavIcons = getResources().obtainTypedArray(R.array.navigation_iconos);
titulos = getResources().getStringArray(R.array.nav_options);
NavItms = new ArrayList<Item_objct>();
NavItms.add(new Item_objct(titulos[0], NavIcons.getResourceId(0, -1)));
NavItms.add(new Item_objct(titulos[1], NavIcons.getResourceId(1, -1)));
NavItms.add(new Item_objct(titulos[2], NavIcons.getResourceId(2, -1)));
NavItms.add(new Item_objct(titulos[3], NavIcons.getResourceId(3, -1)));
NavItms.add(new Item_objct(titulos[4], NavIcons.getResourceId(4, -1)));
NavItms.add(new Item_objct(titulos[5], NavIcons.getResourceId(5, -1)));
NavAdapter= new NavigationAdapter(this,NavItms);
NavList.setAdapter(NavAdapter);
mTitle = mDrawerTitle = getTitle();
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
NavDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* Icono de navegacion*/
R.string.app_name, /* "open drawer" description */
R.string.hello_world /* "close drawer" description */
) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
Log.e("Cerrado completo", "!!");
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
Log.e("Apertura completa", "!!");
}
};
NavDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
NavList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
MostrarFragment(position);
}
});
ventas = new VentasFragment();
}
private void MostrarFragment(int position) {
Fragment fragment = null;
switch (position) {
case 0:
//fragment = new HomeFragment();
break;
case 1:
fragment = ventas;
break;
case 4:
fragment = new customerFragment();
break;
default:
//si no esta la opcion mostrara un toast y nos mandara a Home
Toast.makeText(getApplicationContext(),"Opcion "+titulos[position-1]+"no disponible!", Toast.LENGTH_SHORT).show();
// fragment = new HomeFragment();
position=1;
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
NavList.setItemChecked(position, true);
NavList.setSelection(position);
if(position > 0)
setTitle(titulos[position-1]);
else
setTitle("Balance General");
NavDrawerLayout.closeDrawer(NavList);
} else {
Log.e("Error ", "MostrarFragment"+position);
}
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Pass the event to ActionBarDrawerToggle, if it returns
// true, then it has handled the app icon touch event
if (mDrawerToggle.onOptionsItemSelected(item)) {
Log.e("mDrawerToggle pushed", "x");
return true;
}
// Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
를 선언
학부모 활동 코드를 모두
}
난 당신이 조각 코드에서 보는 것처럼 작업 표시 줄 메뉴import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.ToggleButton;
public class customerFragment extends Fragment {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
private OnFragmentInteractionListener mListener;
public static customerFragment newInstance(String param1, String param2) {
customerFragment fragment = new customerFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
public customerFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_customer, container, false);
// Inflate the layout for this fragment
return view;
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
//mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
public void onFragmentInteraction(Uri uri);
}
을 구현하려는
조각 코드, 내가 setHasOptionMenu (사실)를 호출; 마지막 라인에서 onCreat()를 호출하고 onCreateOptionMenu()를 사용하여 menu.xml을 부 풀리지 만 어쨌든 아무 것도 표시하지 않습니다. 어떻게되는지에 대해 잘 모르겠습니다. 어쨌든 작동하지 않습니다.
정말 고맙습니다. 문제가 빨리 드러나면 미안 해요, 초보자입니다. 메소드 오버라이드 및 콜링에 대해 많은 것을 이해하지 못합니다.
완벽하게 @Romadja, 내가 당신과 함께 일할 수있어, 어쨌든, 고마워, 그건 이상한 일이야. 내가 리소스 메뉴 .xml 파일을 부 풀릴 때 작동하지 않는다. 누군가가 오류를 본다면, 이 사실을 알고 계시다면 왜 그것이 정확히 작동하지 않는지 이해하고 싶습니다. 의견을 주신 모든 분들께 진심으로 감사드립니다. – MaToXz
정확히 ... 그 작업 ... 메뉴에 동적 레이아웃을 포함 시키도록 도와주세요 ... (검색 레이아웃과 마찬가지로) – ranjith