对于 Android 来说非常陌生,老实说我对此感到困惑。
所以我的
MainActivity
从第二个活动 CallAnActivity
接收一些字符串。
我打算将字符串传递回主要活动,它们显示在
TextView
中。但在输入任何信息之前,我希望此文本视图不包含任何内容并且看起来是空白的。
但是,当
MainActivity
首次启动时,文本视图 displayMessageActivity
将显示多个 null
值。由于发送了三个字符串,因此它只是将 null 一词重复了三次。
MainActivity
的代码是:
//callAnActivityButton to open second activity of app
Button callAnActivityButton = findViewById(R.id.callActivityButton);
callAnActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick( View v ) {
Intent intent = new Intent(MainActivity.this, CallAnActivity.class);
startActivity(intent);
}
});
Intent intent = getIntent();
String emailAddress = intent.getStringExtra("emailAddress") + "\n";
String emailSubject = intent.getStringExtra("emailSubject") + "\n";
String emailBody = intent.getStringExtra("emailBody");
//TextView to display text from second activity
TextView displayMessageText = findViewById(R.id.displayMessageText);
displayMessageText.setText(emailAddress + emailSubject + emailBody);
第二个活动
CallAnActivity
的代码是:
public void sendText(){
String emailAddress = mEditTextAddress.getText().toString();
String emailSubject = mEditTextSubject.getText().toString();
String emailBody = mEditTextBody.getText().toString();
Intent intent = new Intent(CallAnActivity.this, MainActivity.class);
intent.putExtra("emailAddress", emailAddress);
intent.putExtra("emailSubject", emailSubject);
intent.putExtra("emailBody", emailBody);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call_an);
mEditTextAddress = findViewById(R.id.emailAddressText);
mEditTextSubject = findViewById(R.id.emailSubjectText);
mEditTextBody = findViewById(R.id.emailBodyText);
Button sendTextButton = findViewById(R.id.sendMailButton);
sendTextButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View v) {
sendText();
}
});
}
只需用
setText
块围绕您的 if
通话即可:-
if (intent.getStringExtra("emailAddress") != null) {
displayMessageText.setText(emailAddress + emailSubject + emailBody);
}
更改您的内容,如下所示。你的 getExtra 语法是错误的
String emailAddress = intent.getExtras().getStringExtra("emailAddress") + "\n";
String emailSubject = intent.getExtras().getStringExtra("emailSubject") + "\n";
String emailBody = intent.getExtras().getStringExtra("emailBody");
I am struggling with a similar issue, as is my understanding
you need to create a const val to retreive your variable from as a Top Level Declaration.
const val FOO = "FOO"
You need to retreive the stored variable from FOO and not "FOO"
val foobar= it.getStringExtra(FOO)
findViewById<TextView>(com.example.R.id.myTextView)
.text = getString(com.example.R.string.myString, foobar)