Отхвърляне на диалоговия прозорец за персонализирано предупреждение при натиснат бутон „Назад“ от хардуер в android

Имам проблем с бутона за връщане назад на хардуера. В моята основна дейност имам един изглед на списък (да речем 1). Когато щракна върху елемент от този изглед на списък (1), се появява един диалогов прозорец за предупреждение, в този диалогов прозорец за предупреждение има един изглед на списък (да кажем 2). Данните от този изглед на списък(2) се повтарят, когато натисна бутона за връщане назад на хардуера. Също така поставих изображение за отмяна в този диалогов прозорец за предупреждение за отхвърляне, когато натисна това изображение за отмяна, данните не се повтарят. Опитах различни методи onResume(), onPause(), onDestroy(), onRestart(), за да изчистя масива за List view(2), но нищо не работи. Ето моя код...

case LIST_DIALOG :
LayoutInflater inflater2 = LayoutInflater.from(this);
View dialogview1 = inflater2.inflate(R.layout.listdialog, null);
AlertDialog.Builder dialogbuilder2 = new AlertDialog.Builder(this);
dialogbuilder2.setView(dialogview1);
dialogDetails = dialogbuilder2.create();


case LIST_DIALOG:

    AlertDialog alertDialog1 = (AlertDialog) dialog;

    // Cancel Alert Dialog
    ImageView ivCancel = (ImageView) alertDialog1.findViewById(R.id.imgCancel);
    ivCancel.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            dismissDialog(LIST_DIALOG); 
            arr2.clear();
        }
    });

    // Friend List
    showFriendList();
    break;

// Данните за списъчен изглед се вмъкват с това извикване на функция private void showFriendList() { // TODO Автоматично генериран метод stub Request.executeMyFriendsRequestAsync(friendSession, new GraphUserListCallback() {

            @Override
            public void onCompleted(List<GraphUser> users, Response response) {
                // TODO Auto-generated method stub

            //  arr2 = new ArrayList<String>();
                for(GraphUser user : users)
                {
                    arr2.add(user.getName());
                }

                adapter2 = new ArrayAdapter<String>(getBaseContext(), R.layout.single_row, R.id.txt,arr2);
                lvDialog.setAdapter(adapter2);
                lvDialog.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                adapter2.notifyDataSetChanged();

                itemCount = lvDialog.getCount();
                Toast.makeText(getBaseContext(), "" + itemCount, 1000).show();

            }
        });


        }

// Опитах тези методи, но нищо не работи...

@Override
      public void onResume()
      {
          super.onResume();
          ShowSavedFiles();
          arr2.clear();

      }

    @Override
    public void onPause()
    {
        super.onPause();
        arr1.clear();
        arr2.clear();
    }


    @Override
    public void onBackPressed() {
    //super.onBackPressed();
    // finish your Activity

    arr2.clear();

    return;
    }

  @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
        arr2.clear();
        dismissDialog(LIST_DIALOG); 

    }
    return false;
}

person Looking Forward    schedule 07.08.2013    source източник


Отговори (1)


Не съм сигурен, но може би добавянето на следния код към вашия метод onKeyDown може да помогне:

return super.onKeyDown(keyCode, event);
person arshu    schedule 07.08.2013