2

我有以下常见问题,很简单,但我不知道我还能做什么。我有 MainActivity 为结果 AnotherActivity 启动。

MainActivity我有(扩展Activity):

Intent i = new Intent(MainActivity.this, Altele.class);
startActivityForResult(i, 0);
...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Toast something; //toast NOT showing
    webview.loadUrl(data.getStringExtra("adresa"));
}

AnotherActivity我有(扩展ListActivity):

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Toast something; //toast showing
    Intent intentMessage = new Intent();        
    intentMessage.putExtra("adresa", something);
    setResult(RESULT_OK, intentMessage);
    finish();       
}

现在,无论我做什么,来自的数据AnotherActivity似乎都没有到达MainActivity. 在这里的这个示例中,我故意跳过了requestCodeandresultCode因为它是同一件事。所以我在这里所拥有的,基本上都在互联网上,但对我来说它不起作用。有任何想法吗?

源代码:http ://www3.zippyshare.com/v/13090519/file.html

更新 我注意到一件事。如果我在应用程序启动后立即开始我的第二个活动以获得结果,则会触发主活动中的 onActivityResult 。如果我在应用程序启动后等待 2 秒或再次尝试运行第二个活动以获得结果,则不再发生任何事情。

4

6 回答 6

0

你所做的似乎是正确的。我已经尝试过了,它对我有用。我正在分享我编写的示例代码。希望这可以帮助。

我的主要活动

import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements android.view.View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1 = (Button)findViewById(R.id.button1); 
        b1.setOnClickListener(this);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        System.out.println("abcd");
        Toast.makeText(this, data.getStringExtra("abc"), Toast.LENGTH_LONG).show();
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(v.getId() == R.id.button1){
             Intent in = new Intent(MainActivity.this,MainActivity1.class);
             startActivityForResult(in, 1);
        }

    }

}

我的 MainActivity1 扩展了 ListActivity 它工作得很好,并在 ddms 和 toast 消息中打印出来

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity1 extends ListActivity{

    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);
      }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        Intent intentMessage=new Intent();        
        intentMessage.putExtra("abc","def");
        setResult(RESULT_OK,intentMessage);
        finish();       
    }

}
于 2013-07-04T08:47:04.837 回答
0

一个迟到的答案,但可能对某人有用。我遇到了同样的问题,当我注意到在 AndroidManifest.xml 文件中 MainActivity 的定义中,我有一行

android:noHistory="true"

当我将此行更正为

android:noHistory="false"

事实上,您也可以删除整行(请参阅此链接)希望这也适用于您。

于 2014-01-07T16:01:59.480 回答
0

愿这些对你有帮助。。

而不是使用INTENT在您的活动之间传递数据尝试使用SharedPreference

它可以存储数据并且可以轻松检索数据。

希望这些对你有帮助。。

于 2013-07-04T10:00:49.763 回答
0

确保您的清单文件不包含您开始的活动的单任务。

于 2013-07-04T09:03:36.617 回答
0

您正在执行“putExtra”并试图获得“getStringExtra”。您应该使用“putStringExtra”或“getExtra”。

于 2013-07-04T08:01:21.117 回答
0

也许你可以试试这个

startActivityForResult(i, **2**);

. . .

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
  super.onActivityResult(requestCode, resultCode, intent);
    switch (requestCode) {
     case **2**:
        toast something;//toast NOT showing
        webview.loadUrl(data.getStringExtra("adresa"));
     break;
    }
}

在列表视图中您可以将其更改为

setResult(0, (new Intent()).setAction(i.getStringExtra("String")));
于 2013-07-04T08:01:58.440 回答