通过意图传递活动之间的变量问题

问题描述:

我想传递两个活动之间的结果,但不知何故,它在某些循环或任何在this.startActivity(pIntent)去,然后强制关闭。这是第一个活动,我的核心code。其计算的东西之后,我想通过双[] passedResults变量:

I want to pass a result between two activities, but somehow its go in some loop or whatever at the this.startActivity(pIntent), then force close. Here is my core code of the first activity. Its calculate something and after that I want to pass the double[] passedResults variable:

public class DisplayMessageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    List<double[]> lokal = readCsv(getApplicationContext());
    ArrayList<String> collect = new ArrayList<String>();

    for (double[]sor : lokal) {

                mean(sor);
                String row = Double.toString(mean(sor));
                collect.add(row);                   
    }

    String result = "";
            for (int c=0; c<collect.size(); c++)
            {
                String curString = collect.get(c);
                result = result + curString + "\n";
            }

    String [] results = result.split("\n");
    double[] passedResults = new double[results.length];
    for(int i = 0; i < results.length; i++)
    {
        passedResults[i] = Double.parseDouble(results[i]);
    }

    //Passing?!
    Intent pIntent=new Intent(this,DisplayMessageActivity.class);
    pIntent.putExtra("sResults", passedResults);
    this.startActivity(pIntent);

    getActionBar().setDisplayHomeAsUpEnabled(true);


    Intent intent = getIntent();

        TextView textView = new TextView(this);
        textView.setTextSize(20);
        textView.setText("Results are the nexts:\n"+result);

        setContentView(textView);
}

然后我想这种方式赶上它在另一个活动:

Then I want to catch it in another activity this way:

public class ScatterGraph extends DisplayMessageActivity{

public Intent getIntent(Context context) {

    Bundle bundle = getIntent().getExtras();
    double[] recievedResults = bundle.getDoubleArray("sResults");
}

这里是LogCat中:

And here is the LogCat:

10-29 20:49:07.078: E/AndroidRuntime(19821): FATAL EXCEPTION: main
10-29 20:49:07.078: E/AndroidRuntime(19821): java.lang.IllegalStateException: eglMakeCurrent failed EGL_BAD_ALLOC
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.HardwareRenderer$GlRenderer.createSurface(HardwareRenderer.java:1069)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.HardwareRenderer$GlRenderer.createEglSurface(HardwareRenderer.java:961)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:787)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1502)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.Choreographer.doCallbacks(Choreographer.java:562)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.Choreographer.doFrame(Choreographer.java:532)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.os.Handler.handleCallback(Handler.java:725)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.os.Looper.loop(Looper.java:137)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at android.app.ActivityThread.main(ActivityThread.java:5227)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at java.lang.reflect.Method.invokeNative(Native Method)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at java.lang.reflect.Method.invoke(Method.java:511)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
10-29 20:49:07.078: E/AndroidRuntime(19821):    at dalvik.system.NativeStart.main(Native Method)

谢谢你帮助我,林真的坚持这一点。林在开发Android新,并找出了几个小时后的溶液。

Thanks for helping me out, Im really stuck with this. Im new at android developing and figure out the solution after a couple of hours.

您正试图从自身内部推出 DisplayMessageActivity ,从而创造无限循环。这使得你的应用程序运行内存不足。

You are trying to launch DisplayMessageActivity from within itself, thus creating an infinite "loop". This makes your app run out of memory.

替换为:

Intent pIntent=new Intent(this,DisplayMessageActivity.class);

Intent pIntent=new Intent(this,ScatterGraph.class);

第二个参数意图(上下文,类&LT;&GT;)。的构造应该是要启动活动类,而不是原始活动

Second argument to Intent(Context, Class<?>) constructor should be the Activity class you wish to launch, not the originating activity.