我是Android的新手
这个问题附有两个屏幕。
第一个屏幕布局:
第二屏幕布局:
我有一个java类 - MyAccount来收集这些数据和进程但是当我得到Scree2.jpg布局时,我无法在同一个类MyAccount中编写screen2的按钮“保存电子邮件ID”。 第二屏布局 我无法在同一个MyAccount类中使用“保存电子邮件ID”按钮操作和监听器。
Button btnCallSalesEmail = (Button)findViewById(R.id.buttonCallSalesEmailWindow);
btnCallSalesEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.myaccount_email_layout);
EmailLoad();
System.out.println("After MyAccountSalesEmailLoad");
}
});
我应该怎么做才能为“保存电子邮件ID”编写动作和监听器
Screen2中的按钮(在不同的布局中)在同一个按钮中
MyAccount
上课。
这个布局没有其他Java类,但我想写 上一课中按钮的动作和监听器,它调用了这种布局。
寻找答复。
答案 0 :(得分:1)
你不应该! 您的类是活动,因此只有一个活动同时处于活动状态,并且它们之间无法直接通信。
但您当然可以将数据从一个活动传递到另一个活动。
关于此主题的Android常见问题实际上有一个条目:http://developer.android.com/resources/faq/framework.html#3
我同意这不清楚哪一个使用时。
根据您的需要,您必须使用第一个条目Intent.putExtras()
。
意图可以包含您要传输的数据(向后或向前)。 因此,根据您的业务逻辑,您有两个解决方案。
您将通过向用于启动它的意图添加额外内容来实现此目的。
Screen1.class
@Override
public void onClick(View v) { //click event for the sales email button
Intent i = new Intent(getApplicationContext(), Screen2.class);
i.putExtra("name", value1);
i.putExtra("lastname", value2);
startActivity(i);
}
在第二个活动中阅读它们。
Screen2.class
Intent i = getIntent();
String valName = i.getStringExtra("name");
String valLastname = i.getStringExtra("lastname");
明确请求结果开始您的活动。
Screen1.java
private static final int GET_EMAIL_REQUEST = 42;
@Override
public void onClick(View v) { //click event for the sales email button
Intent i = new Intent(getApplicationContext(), Screen2.class);
startActivityForResult(i, GET_EMAIL_REQUEST);
}
提供结果并结束第二个活动。
Screen2.java
@Override
public void onClick(View v) { //click event for the save the email's id button
Intent i = getIntent();
intent.putExtra("mail", "stackoverflow@rocks.com");
this.setResult(RESULT_OK, intent);
finish();
}
在第一个活动中阅读结果。
Screen1.java
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == GET_EMAIL_REQUEST) {
if (resultCode == RESULT_OK) {
// mail has been filled.
String mail = intent.getStringExtra("mail");
}
}
}