如何防止TextView中显示null?

问题描述 投票:0回答:3

对于 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();
        }
    });
}
java android android-intent null textview
3个回答
1
投票

只需用

setText
块围绕您的
if
通话即可:-

if (intent.getStringExtra("emailAddress") != null) {
    displayMessageText.setText(emailAddress + emailSubject + emailBody);
}

0
投票

更改您的内容,如下所示。你的 getExtra 语法是错误的

String emailAddress = intent.getExtras().getStringExtra("emailAddress") + "\n";  
String emailSubject = intent.getExtras().getStringExtra("emailSubject") + "\n";
String emailBody = intent.getExtras().getStringExtra("emailBody"); 

0
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.