多个活动应用程序…activity1(sitedata)收集数据并发送到activity10(datareview)…但在直接进入activity10之前,用户必须通过Activity2-9(sandiegoarea等)收集数据并向其他活动传递额外的文本,直到activity10。。。
这样:(activity1->activity2->…->活动10)
activity10将能够查看activity1-9额外的文本以进行验证…代码如下,但activity10没有额外的文本显示在其文本视图中以供查看?我怎样才能解决这个问题?
活动1-站点数据-数据信息输入
public class SiteData extends AppCompatActivity {
public static final String EXTRA_TEXT = "MultipleActivities.EXTRA_TEXT";
public static final String EXTRA_NUMBER = "MultipleActivities.EXTRA_NUMBER";
public void clickFunction(View view) {
Intent intent = new Intent(getApplicationContext(), SanDiegoArea.class);
startActivity(intent);
Log.i("Info", "Login Details Entered");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sitedata);
//Possible coding needed for Autocomplete...see more
Button button = (Button) findViewById(R.id.buttonSend);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openSanDiegoArea();
}
});
}
public void openSanDiegoArea() {
EditText editText1 = (EditText) findViewById(R.id.editTextName);
String text = editText1.getText().toString();
EditText editText2 = (EditText) findViewById(R.id.editTextPhone);
int number = Integer.parseInt(editText2.getText().toString());
Intent intent = new Intent(this, DataReview.class);
intent.putExtra(EXTRA_TEXT, text);
intent.putExtra(EXTRA_NUMBER, number);
startActivity(intent);
}
}
活动10-数据审查部分获取信息
public class DataReview extends AppCompatActivity {
public void clickFunction(View view) {
Intent intent = new Intent(getApplicationContext(), ThankYou.class);
startActivity(intent);
Log.i("Info", "Sample Data Sent to BWTF");
}
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.datareview);
Intent intent = getIntent();
String text = intent.getStringExtra(SiteData.EXTRA_TEXT);
int number = intent.getIntExtra(SiteData.EXTRA_NUMBER, 0);
TextView textView1 = (TextView) findViewById(R.id.editTextName);
TextView textView2 = (TextView) findViewById(R.id.editTextPhone);
TextView textView3 = (TextView) findViewById(R.id.editTextEmail);
TextView textView4 = (TextView) findViewById(R.id.editTextDate);
TextView textView5 = (TextView) findViewById(R.id.editTextTime);
textView1.setText(text);
textView2.setText("" + number);
}
};
1条答案
按热度按时间yvfmudvl1#
如果activity1调用activity2,它将必须按您的方式向其传递数据我猜你的activity2是datareview.class),但是activity2会调用activity3,为了不丢失从activity2收到的数据,你也必须发送它。换句话说,activity1将activity1的数据发送到activity2,activity2将activity1和activity2的数据发送到activity3,依此类推。
这样,activity9将从调用者activity8接收(1、2、3、4、5、6、7、8)数据,并且必须将所有这些累积的数据传递给activity10。
考虑到activity3是由activity2调用的,它无法看到从activity1发送的数据,因为除非activity2也传递它,否则它不知道它。我说清楚了吗?
如果你只是在学习android,那么用这种方式学习是可以的,但这并不是解决这个问题的更好方法。我会在所有活动中使用相同的viewmodel来表示这些数据,以便始终只有一个地方保存数据,因为这样可以使代码更清晰。实际上,我甚至不会使用所有这些活动,我只会使用一个活动,并使用10个片段,每个页面一个(这只是为了在这两者之间提供导航)。所以,如果你觉得你的应用程序不错的话,这些都是你改进它的想法。