Android startActivityForResult未返回日历数据

时间:2012-12-06 06:51:12

标签: android events android-intent calendar

   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);

我的问题是我无法在OnActivityResult中备份Android日历数据,我不知道为什么请帮我解决这个问题。

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 !!!!!

5 个答案:

答案 0 :(得分:1)

因为结果代码总是返回0在android日历中日历隐式意图的活动结果尝试在onActivity结果中使用RESULT_CANCEL

public void onActivityResult(int reqCode,int resultCode,Intent data){

super.onActivityResult(reqCode,resultCode,data);

switch(reqCode){

if(resultCode == Activity.RESULT_CANCEL)

你必须查看Next Event ID它才能正常工作 希望它会对你有所帮助..

戈文德

答案 1 :(得分:1)

如果查看官方文档: http://developer.android.com/reference/android/app/Activity.html#setResult(int, android.content.Intent) 你会看到你在onActivityResult()中获得的Intent实际上取决于你正在调用的Activity。更具体地说,它取决于被调用的Activity是否将setResult(int,android.content.Intent)与带有额外内容的Intent一起使用。

通过快速的互联网搜索,您使用的代码似乎是在日历中添加事件,但这不是必要的,这意味着您将从日历应用程序中获取事件数据。 Perhups你必须在之后查询日历才能获得它们。

至于联系人应用程序,它在Contacts Provider Guide中明确指出,如果使用startActivityForResult,则可以在onActivityResult()中获取联系人数据。在“日历提供程序指南”中没有此类语句,因此可能不受支持。

答案 2 :(得分:-1)

您可以使用此代码:

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");

答案 3 :(得分:-1)

问题是你是直接将数据放入意图并通过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");

希望这能解决你的问题。

答案 4 :(得分:-1)

这是因为您通过活动A的startActivityForResult将数据传递给您启动的活动(活动B).onActivityResult()只会获取活动B而不是活动A传递的数据。

这是关于android意图的一个很好的教程。

http://www.vogella.com/articles/AndroidIntent/article.html

和这个网站也是

http://saigeethamn.blogspot.jp/2009/08/android-developer-tutorial-for_31.html