调用另一个布局中的按钮以在其他一些java类中执行操作

时间:2011-12-09 12:28:11

标签: android android-widget

我是Android的新手

这个问题附有两个屏幕。

第一个屏幕布局:

Screen one Layout

第二屏幕布局:

Screen two Layout

我有一个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类,但我想写     上一课中按钮的动作和监听器,它调用了这种布局。

寻找答复。

1 个答案:

答案 0 :(得分:1)

你不应该! 您的类是活动,因此只有一个活动同时处于活动状态,并且它们之间无法直接通信。

但您当然可以将数据从一个活动传递到另一个活动。 关于此主题的Android常见问题实际上有一个条目:http://developer.android.com/resources/faq/framework.html#3 我同意这不清楚哪一个使用时。 根据您的需要,您必须使用第一个条目Intent.putExtras()

意图可以包含您要传输的数据(向后或向前)。 因此,根据您的业务逻辑,您有两个解决方案。

您需要将第一个活动Screen1中的数据发送到第二个Screen2。

您将通过向用于启动它的意图添加额外内容来实现此目的。

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");

或者您需要将数据从您的活动Screen2返回到Screen1

明确请求结果开始您的活动。

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");
         }
     }
 }