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



注意:我知道如何使用捆绑包和PutExtra将数据活动 1传递给活动 2

我参考下面的链接:

  • 按下后退时如何将数据从第二个活动传递到第一个活动? - 安卓

  • 如何将值从第一个活动传递到第三个活动

问题

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

在活动 1 中,我有数据。当我单击数据时,活动2已启动。

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

活动 3中,我有EditText

所以我想将数据活动1传递到活动 2活动 2活动 3

活动 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());
}
};

活动 2代码:

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;

活动 3代码:

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 代码检查它

你正在通过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 或 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

您可以使用ActivitystartActivityForResult()方法来实现此性质。

参考此链接 开始活动结果

您可以使用共享优先级来存储活动 1和活动2的数据以传入活动 3

并不难,只需使用 putExtra() 以便在活动之间传递数据,工作流程将是这样的,首先使用 putExtra()作为您进入第二个活动的第一个意图,在您到达活动 2 之后,只需使用捆绑包 getExtras() 获得结果,然后只需创建另一个 intent.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 中的数据,对活动 2 执行与活动 1 相同的操作

String myData = getData;
Intent intent = new Intent(getBaseContext(), Activity3.class);
intent.putExtra("THE_ID_OF_WHAT_YOU_ARE_SENDING2", myData);
startActivity(intent);

并在您的活动 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
}

编辑:您的问题是您将数据作为 item1 发送到活动 2,但在活动 2 中,您没有获得该 item1 数据,您只是创建一个新数据并将其发送到活动 3。

在活动 2 中检查这一点

Intent intent = new Intent(this, AddCompanyActivity.class);
intent.putExtra("company", item1);
intent.putExtra("edit", "editFrag");

无需创建新 item1,只需从活动 1 中的 item1 中获取数据:

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

相关内容

  • 没有找到相关文章