gpt4 book ai didi

java - Android编程使用旧变量定义新变量?

转载 作者:行者123 更新时间:2023-12-02 07:00:05 28 4
gpt4 key购买 nike

如何在 Android 中用 java 中的旧变量定义新变量?我说的是这段代码的一部分,其中包含字符串 to, message, subject 以及等号右侧的一些占位名称。我需要知道如何将 textSubject 等值更改为先前定义的相关变量。当我彻底更换它们时,由于某种原因它不起作用。

此外,我不明白为什么它不会在此之前采用 onClick 方法。这是代码。

public class RefillActivity extends Activity {
public String name;
public String birthday;
public String prescriptionOptions;
public String notes;
public String number;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.refill_activity_main);
sendRefillRequest();
Button submit = (Button) findViewById(R.id.ButtonSendRefillRequest);
submit.setOnClickListener(new View.onClickListener() {

@Override
public void onClick(View view) {

String to = textTo.getText().toString();
String message = textMessage.getText().toString();
String subject = name.getText().toString();

Intent mEmail = new Intent(Intent.ACTION_SEND);
mEmail.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@example.com"});
mEmail.putExtra(Intent.EXTRA_SUBJECT, subject);
mEmail.putExtra(Intent.EXTRA_TEXT, message);

// prompts to choose email client
mEmail.setType("message/rfc822");
startActivity(Intent.createChooser(mEmail, "Choose an email client to send your feedback!"));
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.refill, menu);
return true;
}
public void sendRefillRequest(){
final EditText nameField = (EditText) findViewById(R.id.EditTextName);
name = nameField.getText().toString();
final EditText birthdayField = (EditText) findViewById(R.id.EditTextBirthday);
birthday = birthdayField.getText().toString();
final EditText numberField = (EditText) findViewById(R.id.EditTextPrescriptionNumber);
number = numberField.getText().toString();
final Spinner prescriptionOptions = (Spinner) findViewById(R.id.SpinnerPrescriptionOptions);
this.prescriptionOptions = prescriptionOptions.getSelectedItem().toString();
final EditText notesField = (EditText) findViewById(R.id.EditTextSpecialNotes);
notes = notesField.getText().toString();
}

}

最佳答案

您正在将变量定义为这些方法的局部变量。使它们成为成员变量

public class RefillActivity extends Activity {
public String name;
public String birthday;
public String prescriptionOptions;
public String notes;
public String number;

EditText nameField; // define them here
EditText birthdayField;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.refill_activity_main);
sendRefillRequest();
Button submit = (Button) findViewById(R.id.ButtonSendRefillRequest);
submit.setOnClickListener(new View.onClickListener() {

将它们定义为成员变量,然后您可以在 sendRefillRequest() 中初始化它们,并且您将可以访问它们

此外,在您的 sendRefillRequest() 方法中,将 String 变量定义为 final,您将可以在 中访问它们>onClick

如果这不能解决您的问题“...为什么它不采用 onClick 方法...”,那么请更具体一些。它在做什么/没有做什么?您是否在其中放置断点以查看单击 Button 时是否输入了断点?

关于java - Android编程使用旧变量定义新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com