Java 如何将数据从第一个活动传递到第二个,从第二个活动传递到第三个

Java 如何将数据从第一个活动传递到第二个,从第二个活动传递到第三个,java,android,android-intent,Java,Android,Android Intent,注意:我知道如何使用Bundle和PutExtra将数据Activity1传递给Activity2 我参考以下链接: 问题 我有三个活动,活动1,活动2和活动3 在活动1中,我有数据。当我点击数据时,活动2开始 在活动2中,我有文本视图。当我点击文本视图,然后打开活动3 在活动3中我有编辑文本 因此,我想将数据Activity1传递到Activity2和Activity2传递到Activity3 活动1代码: private OnItemClickListener listener =

注意:我知道如何使用Bundle和
PutExtra将数据Activity1传递给Activity2

我参考以下链接:

问题

我有三个活动,活动1活动2活动3

在活动1中,我有数据。当我点击数据时,活动2开始

活动2中,我有文本视图。当我点击文本视图,然后打开活动3

活动3中我有
编辑文本

因此,我想将数据Activity1传递到Activity2Activity2传递到Activity3

活动1代码:

private OnItemClickListener listener = new OnItemClickListener() {
        @Override
        public void onItemClick(Base item) {
            Company company = (Company) item;
            Intent intent = new Intent(getActivity(), CompanyDetailActivity.class);
            //intent.putExtra("company", company);
            //intent.putExtra("edit", "editFrag");
            intent.putExtra("company", item);
            startActivity(intent);
            Log.e("Item...","Item clicked "+company.getName());
        }
    };
case R.id.rlCompanyProfile:
            //Base item = null;
            Company company = (Company) getIntent().getExtras().getSerializable("company") ;
            Intent intent = new Intent(this, AddCompanyActivity.class);
            intent.putExtra("company", company);
            //intent.putExtra("company", myData);
            intent.putExtra("edit", "editFrag");
            startActivity(intent);
            break;
Intent extras1 = getIntent();
        {


                        Company value = (Company) extras1.getSerializableExtra("company");
                        etCompanyName.setText(value.getName());
                        etWebsite.setText(value.getWebsite());
                        etEmail.setText(value.getEmail());
                        etPhoneHome.setText(value.getPhoneHome());
                        etPhonePrimary.setText(value.getPhonePrimary());
                        etAddressLine1.setText(value.getAddressLine1());
                        etAddressLine2.setText(value.getAddressLine2());
                        etCity.setText(value.getCity());
                        etZip.setText(value.getZipcode());
                    }
活动2代码:

private OnItemClickListener listener = new OnItemClickListener() {
        @Override
        public void onItemClick(Base item) {
            Company company = (Company) item;
            Intent intent = new Intent(getActivity(), CompanyDetailActivity.class);
            //intent.putExtra("company", company);
            //intent.putExtra("edit", "editFrag");
            intent.putExtra("company", item);
            startActivity(intent);
            Log.e("Item...","Item clicked "+company.getName());
        }
    };
case R.id.rlCompanyProfile:
            //Base item = null;
            Company company = (Company) getIntent().getExtras().getSerializable("company") ;
            Intent intent = new Intent(this, AddCompanyActivity.class);
            intent.putExtra("company", company);
            //intent.putExtra("company", myData);
            intent.putExtra("edit", "editFrag");
            startActivity(intent);
            break;
Intent extras1 = getIntent();
        {


                        Company value = (Company) extras1.getSerializableExtra("company");
                        etCompanyName.setText(value.getName());
                        etWebsite.setText(value.getWebsite());
                        etEmail.setText(value.getEmail());
                        etPhoneHome.setText(value.getPhoneHome());
                        etPhonePrimary.setText(value.getPhonePrimary());
                        etAddressLine1.setText(value.getAddressLine1());
                        etAddressLine2.setText(value.getAddressLine2());
                        etCity.setText(value.getCity());
                        etZip.setText(value.getZipcode());
                    }
活动3代码:

private OnItemClickListener listener = new OnItemClickListener() {
        @Override
        public void onItemClick(Base item) {
            Company company = (Company) item;
            Intent intent = new Intent(getActivity(), CompanyDetailActivity.class);
            //intent.putExtra("company", company);
            //intent.putExtra("edit", "editFrag");
            intent.putExtra("company", item);
            startActivity(intent);
            Log.e("Item...","Item clicked "+company.getName());
        }
    };
case R.id.rlCompanyProfile:
            //Base item = null;
            Company company = (Company) getIntent().getExtras().getSerializable("company") ;
            Intent intent = new Intent(this, AddCompanyActivity.class);
            intent.putExtra("company", company);
            //intent.putExtra("company", myData);
            intent.putExtra("edit", "editFrag");
            startActivity(intent);
            break;
Intent extras1 = getIntent();
        {


                        Company value = (Company) extras1.getSerializableExtra("company");
                        etCompanyName.setText(value.getName());
                        etWebsite.setText(value.getWebsite());
                        etEmail.setText(value.getEmail());
                        etPhoneHome.setText(value.getPhoneHome());
                        etPhonePrimary.setText(value.getPhonePrimary());
                        etAddressLine1.setText(value.getAddressLine1());
                        etAddressLine2.setText(value.getAddressLine2());
                        etCity.setText(value.getCity());
                        etZip.setText(value.getZipcode());
                    }

您可以使用
Activity
类的
startActivityForResult()
方法来实现这一特性


引用此链接并不难,只需使用putExtra()在活动之间传递数据,工作流将是这样的,首先使用putExtra()作为第一个意图转到第二个活动,到达活动2后,只需使用bundle getExtras()获取结果,然后创建另一个意图。putExtra()将该数据发送到活动3

工作流应该是这样的

活动1

String myData = "StackOverflowRocks";

Intent intent = new Intent(getBaseContext(), Activity2.class);
intent.putExtra("THE_ID_OF_WHAT_YOU_ARE_SENDING", myData);
startActivity(intent);
活动2中,只需获取数据即可

 Bundle extras = getIntent().getExtras(); 
 String getData;

if (extras != null) {
    userName = extras.getString("THE_ID_OF_WHAT_YOU_ARE_SENDING");
    // and get whatever type user account id is
}
既然活动2中有了数据,请执行与活动1到活动2相同的操作

String myData = getData;

Intent intent = new Intent(getBaseContext(), Activity3.class);
intent.putExtra("THE_ID_OF_WHAT_YOU_ARE_SENDING2", myData);
startActivity(intent);
Intent intent = new Intent(this, AddCompanyActivity.class);
intent.putExtra("company", item1);
intent.putExtra("edit", "editFrag");
并在你的活动3中获得它

你可以通过这种方式检查你的额外资料

Bundle extras = getIntent().getExtras(); 
 String getData;

if (extras != null) {
    userName = extras.getString("THE_ID_OF_WHAT_YOU_ARE_SENDING2");
    // and get whatever type user account id is
}
编辑:您的问题是,您正在将数据作为项1发送到活动2,但在活动2中,您没有获得该项1数据,您只是创建了一个新数据并将其发送到活动3

在活动2中检查此项

String myData = getData;

Intent intent = new Intent(getBaseContext(), Activity3.class);
intent.putExtra("THE_ID_OF_WHAT_YOU_ARE_SENDING2", myData);
startActivity(intent);
Intent intent = new Intent(this, AddCompanyActivity.class);
intent.putExtra("company", item1);
intent.putExtra("edit", "editFrag");
不要创建新的item1,只需从活动1中的item1获取数据:

String company = getIntent().getStringExtra("company");

您可以使用intent或bundle传递数据

您还可以使用共享首选项来存储和检索数据。 使用意图如下:

// send data
    Intent intent = new Intent(Activity1.this, Activity2.class);
    intent.putExtra("detailData",data);
    startActivity(intent);
//retrieve data
    Intent intent = getIntent();
    String detailData = intent.getStringExtra("detailData");
使用束

 //Create the bundle 
 Bundle bundle = new Bundle();
//Add your data from getFactualResults method to bundle
bundle.putString("VENUE_NAME", venueName);
//Add the bundle to the intent
i.putExtras(bundle);
startActivity(i);
//retrie bundle 
Bundle bundle = getIntent().getExtras();

//Extract the data…
String venName = bundle.getString("VENUE_NAME");
共享优先权:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();
    SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putString("key", value);
                editor.commit();
//retrieve data
pref.getString("key", null); // getting String

您可以使用sharedpreferance存储活动1活动2的数据,以传入活动3

问题出在这里活动2代码检查它

您正在传递
item=null
活动2代码:

case R.id.rlCompanyProfile:
Base item = null; // item object is null here
Company company = (Company) item ;// here you are passing null item object of your Company class
Intent intent = new Intent(this, AddCompanyActivity.class);
intent.putExtra("company", item);
intent.putExtra("edit", "editFrag");
startActivity(intent);
break;
编辑 要向活动发送数据,请使用此

intent.putExtra("company", company);
Company company=intent.getSerializableExtra("company");
要在第三个活动中接收数据,请使用此

intent.putExtra("company", company);
Company company=intent.getSerializableExtra("company");

那么问题出在哪里?数据无法将activity1传递给activity2,也无法将activity2传递给activity3@PankajKumar@MohammadAli分享你的代码到目前为止你尝试了什么?等待2分钟@NileshRathod@MohammadAli首先,在这里不要太粗鲁。如果您能够在A到B之间发送数据,那么在B到C之间无法传递数据的情况下,一定存在代码问题。比如说,
getData
在活动中为null。2在getExtra中添加了null检查,如果它显示null,则可能是变量类型或您传递的数据为null,但这应该能起作用,我会在
项目中检查第一个活动数据,但第二个活动数据无法捕获,因为我一直在说,您的项目数据有误,伙计,请发布您的POJOU更新您的答案@NileshRathod@MohammadAlidoneya很好,非常感谢你@NileshRathod@MohammadAli欢迎乐意帮助你