我究竟能从两个不同的(假设:A和B)活动中检索数据,我想在另一个活动(活动C)中显示。也许我可以这样绘制 - A和B包含应该用C显示的数据。就像那样简单。
但问题是当我从A接收数据后,我从B获取数据(这次我也从B接收数据)。来自A的数据丢失或者就像'重置'一样。当我从B接收数据并从A中获取数据时,也会出现此问题。
我正在使用以下代码:
活动A:我如何使用Intent发送数据
public static final String EXTRA_COUNTRY_SITE = "EXTRA_COUNTRY_SITE";
private static final int REQUEST_RESPONSE_SITE = 1;
class ItemLists implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tvs = (TextView)view.findViewById(R.id.textViewSiteName);
// Lets say textview just like String "Data A"
Intent intent = new Intent(view.getContext(), LoginActivityView.class);
intent.putExtra(EXTRA_COUNTRY_SITE, tvs.getText().toString());
// tvs.getText().toString() here you can change it to String
startActivityForResult(intent, REQUEST_RESPONSE_SITE);
}
}
活动B:这是我使用Intent发送数据的方式
public static final String EXTRA_COUNTRY_EMPLOYEE = "EXTRA_COUNTRY_EMPLOYEE";
private static final int REQUEST_RESPONSE_EMPLOYEE = 1;
class ItemListe implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tve = (TextView)view.findViewById(R.id.textViewEmpName);
// Lets say textview just like String "Data B"
Intent intent = new Intent(view.getContext(), LoginActivityView.class);
intent.putExtra(EXTRA_COUNTRY_EMPLOYEE, tve.getText().toString());
// tvs.getText().toString() here you can change it to String
startActivityForResult(intent, REQUEST_RESPONSE_EMPLOYEE);
}
}
活动C:我只想在EditText中显示
//此问题来自
String country_emp = getIntent().getStringExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE);
EditText editTextEmployee= (EditText) findViewById(R.id.editTextEmployee);
editTextEmployee.setText(country_emp);
String country_site = getIntent().getStringExtra(ViewSiteActivity.EXTRA_COUNTRY_SITE);
EditText editTextSite= (EditText) findViewById(R.id.editTextSite);
editTextSite.setText(country_site);
这就是我从活动C开始活动A和B的方式
public void click(View v) {
Intent intent = null;
switch(v.getId()) {
case R.id.editTextSite:
intent = new Intent(this, ViewSiteActivity.class);
break;
case R.id.editTextEmployee:
intent = new Intent(this, ViewEmployeeActivity.class);
}
startActivity(intent);
}
任何解决该问题的想法或传递数据的其他技巧。抱歉我的英语不好,我只是Android的初学者。
答案 0 :(得分:0)
如果C仅从A接收B和B,则将从A接收的束添加到从B开始的C中的Intent
Activity B
...
intent.putExtras(receivingBundle):
...
如果您想从A或B启动活动C, C只接收来自启动活动的数据。
答案 1 :(得分:0)
我理解为,你想要将数据从A传递给B,然后将A和B的数据传递给C.如果是这样,你必须将A和B数据从B发送到C.但是你要发送只有B数据,因为我可以看到代码。
在B活动点击事件中尝试此操作
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tve = (TextView)view.findViewById(R.id.textViewEmpName);
// Lets say textview just like String "Data B"
Intent intent = new Intent(view.getContext(), LoginActivityView.class);
intent.putExtra(EXTRA_COUNTRY_EMPLOYEE, tve.getText().toString());
intent.putExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE, getIntent().getStringExtra(ViewEmployeeActivity.EXTRA_COUNTRY_EMPLOYEE));
// tvs.getText().toString() here you can change it to String
startActivityForResult(intent, REQUEST_RESPONSE_EMPLOYEE);
}
如果我理解你的问题是错误的,请纠正我。
答案 2 :(得分:0)
您可以使用“共享首选项”存储数据并在以后使用它们, 这是示例
将数据存储在共享首选项中
1)在活动A中
SharedPreferences sharedpreferences;
sharedpreferences = getSharedPreferences("myPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(EXTRA_COUNTRY_SITE,tvs.getText().toString());
editor.commit();
2)在活动B中
SharedPreferences sharedpreferences;
sharedpreferences = getSharedPreferences("myPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(EXTRA_COUNTRY_EMPLOYEE,tvs.getText().toString());
editor.commit();
3)在活动C中使用它们
SharedPreferences prefs = this.getSharedPreferences("myPref", Context.MODE_PRIVATE);
String countrySite = prefs.getString(EXTRA_COUNTRY_SITE, null);
String countryEmp = prefs.getString(EXTRA_COUNTRY_EMPLOYEE, null);