Я хочу использовать данные, которые я получил в своем onCreate() другим способом. Я знаю, что это базовая Java, но я не могу заставить эту конкретную вещь работать. Сценарий: пользователь делится изображением через свою галерею с моим приложением. Я получаю uri через намерение и хочу сделать тост, показывающий uri. Все идет нормально. Это то, что я получил:Передача информации между методами
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Handle incoming shared image
// Get intent, action and MIME type
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
handleWrongContent(intent); // Handle text being sent
} else if (type.startsWith("image/")) {
handleSendImage(intent); // Handle single image being sent
}
} else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
if (type.startsWith("image/")) {
handleWrongContent(intent); // Handle multiple images being sent
}
}
...
}
private void handleSendImage(Intent intent) {
String str = intent.getParcelableExtra("imageUri").toString();
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
}
Если бы я попробовать это сейчас, я получаю эту NPE:
Attempt to invoke virtual method 'java.lang.String
java.lang.Object.toString()' on a null object reference
Спасибо за вашу помощь!
'intent.getParcelableExtra' возвращает null. Вероятно, нет ключа под названием «imageUri». Вы можете проверить использование 'hasExtras()' перед тем, как его предотвратить, чтобы предотвратить NPE. –
Это то, что я тоже думал, но как я могу проверить правильный лишний ключ, который мне нужен? – timbremer