在屏幕之间传递字符串

时间:2012-07-19 12:32:05

标签: android string

考虑3个屏幕1,2,3。我想从第一个屏幕在第二个屏幕中输入字符串(价格)。所以在第一个屏幕我做了putextra并在第二个屏幕得到了。现在我导航到第3个屏幕并点击第3个屏幕中的后退按钮我将回到第2个屏幕。现在该字符串(价格)显示为null。请纠正我。

我的代码:

屏蔽1:

Intent intent=new Intent(getApplicationContext(),IncomeDetails.class);
          intent.putExtra("grpsdb", grp1);
          startActivityForResult(intent,1);

屏幕2:

System.out.println("string="+intent.getStringExtra("grpsdb"));
           Cursor c = db.getIncometitle(intent.getStringExtra("grpsdb"));
           startManagingCursor(c); 

屏幕3:

back.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    Intent intent=new Intent(getApplicationContext(),IncomeDetails.class);
                    startActivity(intent);

                }

2 个答案:

答案 0 :(得分:2)

您获得String price null 值,因为您正在从第3个活动开始第二个活动(IncomeDetails.class)

如我所见,IncomeDetails.class是您的第二个活动

并且您正尝试从第3个活动开始新的第2个活动,

使用代码,

back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(getApplicationContext(),IncomeDetails.class);
                startActivity(intent);
            }

所以只需将finish()第3个活动放入按钮的点击中......而不是再次启动第2个新活动。

类似的东西,

back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                <Your_3rd_Activity_Name>.finish();
            }

还有一件事,使用stratActivityForResult()从第二个活动开始第三个活动,在开始第三个活动时不要finish()第二个活动。

答案 1 :(得分:0)

您应该在第二个活动中使用startActivityForResult(),并从那里使用呼叫活动3。 然后在activity 2中也使用`onActivityResult(int requestCode,int resultCode,Intent data)方法。 看一下这个例子:http://rahulonblog.blogspot.co.uk/2010/05/android-startactivityforresult-example.html

祝你好运:)