1-) Android RMOS - Actionbar Action bar geri tuşu ekleme
AÇIKLAMA : onCreateOptionsMenu KESİN olacak . onOptionsItemSelected kesin olacak. onActivityCreated telefonun aşağıdaki geri tuşu için içinde kesin OnBackPressedCallback olacak. onCreateView de setHasOptionsMenu(true); kesin olacak .
Menu menu;
MenuInflater inflater;
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
this.menu = menu;
this.inflater = inflater;
menu.clear();
inflater.inflate(R.menu.menu_nfc, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
MainActivity.mainActivity.navController.navigate(R.id.nav_konum);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
@Override
public void handleOnBackPressed() {
MainActivity.mainActivity.navController.navigate(R.id.nav_konum);
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
setHasOptionsMenu(true);
return inflater.inflate(R.layout.fragment_nfc_main, container, false);
}
----------------------------------------
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (viewFlipper.indexOfChild(viewFlipper.getCurrentView()) != 0) {
viewFlipper.setInAnimation(getApplicationContext(), R.anim.in_from_left);
viewFlipper.setOutAnimation(getApplicationContext(), R.anim.out_to_right);
viewFlipper.showPrevious();
} else {
finish();
}
return true;
}
return super.onOptionsItemSelected(item);
}
veya
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
...
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
...
2-) GERİ TUŞU DRAWER İLE EKLEME
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: // action bardaki geri tuşuna basınca demek
geriGiderken();
return true; // BURASI ÖNEMLİ RETURN OLACAK
Mainactivity de aşağıdaki alandan fragmenti çıkar
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_konum, // BU KISIMDAN O FRAGMENTİ ÇIKAR
drawer açılırsa bu şekilde kapatırız
MainActivity.mainActivity.drawer.closeDrawers();
2-) GERİ TUŞUNU TELEFONUN GERİ TUŞU İLE AYNI YAPTIM
@Override
public void onBackPressed() {
int displayedChild = viewFlipper.getDisplayedChild();
if (displayedChild>0) {
viewFlipper.setDisplayedChild(displayedChild-1);
}
else{
super.onBackPressed();
}
}
3-) viewFlipper Kullanımı.java
viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
viewFlipper.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
switch (viewFlipper.indexOfChild(viewFlipper.getCurrentView())) {
case 0:
btnQr.setVisibility(View.VISIBLE);
getSupportActionBar().setTitle("Konum Seçiniz");
txtInfo.setText("...");
Toast.makeText(Demirbas.this, "case 0", Toast.LENGTH_SHORT).show();
break;
case 1:
getSupportActionBar().setTitle("Alt Konum Seçiniz");
txtInfo.setText("" + AnaDepAd);
Toast.makeText(Demirbas.this, "case 1", Toast.LENGTH_SHORT).show();
btnQr.setVisibility(View.GONE);
break;
case 2:
btnQr.setVisibility(View.VISIBLE);
getSupportActionBar().setTitle("" + AnaDepAd + " -> " + AltDepAd);
txtInfo.setText("");
Toast.makeText(Demirbas.this, "case 2", Toast.LENGTH_SHORT).show();
break;
default:
break;}}});
3-) viewFlipper Kullanımı.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.ramazan.user.rmospersonel.OrderTakerGiris"
android:orientation="vertical">
<Button
android:id="@+id/btnQr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_green_dark"
android:onClick="QR_Oku"
android:text="QR/BARKOD OKU"
android:textColor="@color/zxing_status_text"
android:textSize="19sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:id="@+id/txtInfo"
android:textStyle="bold"
/>
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewFlipper"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listAna"></ListView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listAlt"></ListView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listUrun"></ListView>
</LinearLayout>
</ViewFlipper>
</LinearLayout>
4-) getSupportActionBar'daki yazıyı küçültmek istersen
ActionBar bar = getSupportActionBar();
if(bar!=null){
tv = new TextView(getApplicationContext());
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT, // Width of TextView
ActionBar.LayoutParams.WRAP_CONTENT); // Height of TextView
tv.setLayoutParams(lp);
tv.setText(bar.getTitle());
tv.setGravity(Gravity.CENTER);
tv.setTextColor(Color.WHITE);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
bar.setCustomView(tv);
bar.setDisplayHomeAsUpEnabled(true);
}