🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / Actionbar Action bar geri tuşu ekleme

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

 

 

 

 

 2021 Aralık 09 Perşembe
 443