2016-11-19 4 views
0

У меня есть фрагмент, где я должен реализовать метод onBackPressed(), но он не работаетAndroid onBackPressed() в фрагменте

public void onBackPressed(){ 
     new AlertDialog.Builder(getActivity()) 
      .setTitle(R.string.app_name) 
      .setMessage("Are you sure you want to exit?") 
      .setNegativeButton(android.R.string.no, null) 
      .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() 
{ 

    public void onClick(DialogInterface arg0, int arg1) 
{ 
     ((MainActivity)PaymentFragment.this.getActivity()).showOrders(); 
} 
     }).create().show(); 
} 

У меня есть 3 метода:

OnCreate:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

onCreateView():

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    btnPayment = (Button) root.findViewById(R.id.btnPayPal); 

    btnPayment.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(SessionManager.totalPayment>0){ 
       PayPalPayment payment = new PayPalPayment(new BigDecimal(SessionManager.totalPayment), "EUR", "SSSSS", 
         PayPalPayment.PAYMENT_INTENT_SALE); 

       Intent intent = new Intent(getActivity(), PaymentActivity.class); 

       intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment); 

       startActivityForResult(intent, 0); 
      }else{ 
       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
       alertDialogBuilder.setTitle(R.string.app_name); 
       alertDialogBuilder 
         .setMessage(R.string.empty_cart) 
         .setCancelable(true) 
         .setPositiveButton(R.string.ok,new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog,int id) { 

          } 
         }); 
    return root; //view 
} 

onActivityResult() - Здесь я иду к деятельности PayPal

@Override 
public void onActivityResult (int requestCode, int resultCode, Intent data) { 
    if (resultCode == Activity.RESULT_OK) { 
     confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION); 
     if (confirm != null) { 
      try { 
       String confirmation = confirm.toJSONObject().toString(4); 
... 

Я хочу сделать диалоговое окно, в котором, если пользователь подтверждает, что он хочет, чтобы выйти, он идет в showOrders фрагмент. В каком методе я должен включить метод onBackPressed() и как изменить код для работы с фрагментами? Я прочитал несколько статей о StackOverflow, но не ответил на мои вопросы. Спасибо!

ответ

0
fragment.getView().setFocusableInTouchMode(true); 
fragment.getView().requestFocus(); 
fragment.getView().setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event){ 
     if(keyCode == KeyEvent.KEYCODE_BACK) { 
      return true; 
     } 
     return false; 
    } 
}); 
Смежные вопросы