Невозможно реализовать кнопку «Назад» в Actionbar

#android #android-actionbar

#Android #android-actionbar

Вопрос:

я создаю приложение с ActionBar помощью . в какой панели действий выполняется действие совместного доступа. но я хочу добавить кнопку «Назад» вместе с реализацией совместного доступа. В принципе, я хочу, чтобы обе вещи работали в соответствии с выбором пользователя.

вот мой код:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

        // Handle item selection
        ImageView image = (ImageView) findViewById(R.id.full_image_view); //Unreachable Code
        Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();

        File sd = Environment.getExternalStorageDirectory();
        String fileName = "desi.png";
        File dest = new File(sd, fileName);
        try {
            FileOutputStream out;
            out = new FileOutputStream(dest);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        switch (item.getItemId()) {
            case R.id.item:
                Uri uri = Uri.fromFile(dest);
                Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
                shareIntent.setType("image/*");
                startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.share)));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }

    }
  

я сам реализовал обе вещи, но закончил с недоступным кодом, о котором мне упоминал eclipse.
любая помощь будет оценена.
Спасибо!

Комментарии:

1. В первом переключателе «case» заканчивается возвратом, а «default» также заканчивается возвратом; это означает, что в любом случае просто завершите метод и, следовательно, предупреждение о недоступности кода.

2. итак, я должен исключить код по умолчанию для случая переключения?

3. как @yygyt поместите super.onOptionsItemSelected(элемент); в самый низ после default: break; в моем случае это работает, просто попробовал

4. что, если я объявлю действие кнопки «Назад» сразу после переключения для совместного использования?

5. готово, проверьте редактирование, я решаю проблему, спасибо всем за помощь 🙂

Ответ №1:

это правильный код:

 switch (item.getItemId()) {
            case R.id.item:
                Uri uri = Uri.fromFile(dest);
                Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
                shareIntent.setType("image/*");
                startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.share)));
                return true;


            case android.R.id.home:
                // app icon in action bar clicked; go home
                Intent intent = new Intent(this, MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
  

я попытался реализовать оба случая в одном switch операторе, и это устраняет ошибку, и, кроме того, приложение работает в соответствии с кодом.
Спасибо!