#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
операторе, и это устраняет ошибку, и, кроме того, приложение работает в соответствии с кодом.
Спасибо!