Android startActivityForResult не возвращает данные календаря
The code Written below works for me
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title", "Hi this me");
intent.putExtra("description", "Some description");
intent.putExtra("beginTime", eventStartInMillis);
intent.putExtra("endTime", eventEndInMillis);
startActivityForResult(intent, 1);
Мой вопрос в том, что я не могу вернуть данные календаря Android в OnActivityResult, я не знаю, почему, пожалуйста, помогите мне в этой проблеме.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("title");
}
And i am getting data.getExtras() is null !!!!!
Ответы
Ответ 1
Это так, потому что код результата всегда возвращается 0 В календаре android Результат действия неявного намерения календаря попытается использовать RESULT_CANCEL в onActivity result
public void onActivityResult (int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
if (resultCode == Activity.RESULT_CANCEL)
И вам нужно просто проверить Следующий идентификатор события, он будет работать
Надеюсь, это поможет вам.
Говинд
Ответ 2
Если вы посмотрите официальную документацию:
http://developer.android.com/reference/android/app/Activity.html#setResult (int, android.content.Intent)
вы увидите, что намерение, которое вы получаете в onActivityResult(), фактически зависит от действия, которое вы вызываете. Более конкретно, это зависит от того, использует ли вызываемая активность setResult (int, android.content.Intent) с Intent с дополнительными функциями или нет.
Из быстрого поиска в Интернете кажется, что код, который вы используете, предназначен для добавления события в Календарь, но это не обязательно означает, что вы получите данные события из приложения "Календарь". Perhups вы должны запросить календарь после этого, чтобы получить их.
Что касается приложения "Контакты", оно конкретно указывается в "Руководство поставщика контактов" , что вы можете получить контактные данные в onActivityResult(), если вы используете startActivityForResult. В руководстве поставщика календаря такой инструкции нет, поэтому он, вероятно, не поддерживается.
Ответ 3
Вы можете использовать этот код:
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
if (resultCode == Activity.RESULT_OK) {
Bundle extras = data.getExtras();
String title=extras.getString("title");
String description=extras.getString("description");
String beginTime=extras.getString("beginTime");
String endTime=extras.getString("endTime");
Ответ 4
Проблема заключается в том, что вы непосредственно отправляете данные в намерение и извлекаете их через Bundle.
Попробуйте следующее:
Нарисуйте объект пакета следующим образом:
Intent i = new Intent("yourFullyQualifiedClassName");
Bundle extras = new Bundle();
extras.putString("title", "Hi this me");
extras.putString("description", "Some description");
i.putExtras(extras);
Затем извлеките данные из пакета следующим образом:
Bundle bundle = data.getExtras();
bundle.getString("title");
Надеюсь, что это решает вашу проблему.
Ответ 5
Это потому, что вы передаете данные активности, которую вы начали (Activity B), с помощью startActivityForResult из Activity A. onActivityResult() будет получать данные, передаваемые Activity B, а не Activity A.
Вот хороший учебник о намерениях Android.
http://www.vogella.com/articles/AndroidIntent/article.html
и этот сайт тоже
http://saigeethamn.blogspot.jp/2009/08/android-developer-tutorial-for_31.html