【问题标题】:Android Intent is not passing the variable from one class to anotherAndroid Intent 没有将变量从一个类传递到另一个类
【发布时间】:2021-07-30 01:48:13
【问题描述】:

在 Android Studio 中,我创建了一个名为 name 的简单字段。我想将这个名为 name 的变量传递给名为 MainActivity2 的类。 我已经为此声明了 Intents 和 Bundle。但是,MainActivity1 类不会将此变量发送到 MainActivity2。证明这一点的代码是:Toast.makeText(getApplication(), "Name:" +name, Toast.LENGTH_LONG).show();

它应该显示:名称:+name

问题是它只出现:“名称:”

请问,谁能帮帮我? 我的代码是:

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    EditText name; Button nextPage;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name = findViewById(R.id.namefield);

        final String name = name.getText().toString();

        nextPage = findViewById(R.id.nextPage);

        nextPage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent senderIntent = new Intent(getApplicationContext(), MainActivity2.class);
                Bundle bundle = new Bundle();
                bundle.putString("name", name);
                senderIntent.putExtras(bundle);

                startActivity(senderIntent);
                    Toast.makeText(getApplication(), "Name:" +name, Toast.LENGTH_LONG).show();
            }
        });
    }
}```

【问题讨论】:

    标签: java android android-intent bundle


    【解决方案1】:

    在 MainActivity 中试试这个:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        name = findViewById(R.id.namefield);
        nextPage = findViewById(R.id.nextPage);
    
        nextPage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent senderIntent = new Intent(MainActivity.this, MainActivity2.class);
                String strName = name.getText().toString();
                senderIntent.putExtra("NAME", strName);
                startActivity(senderIntent);
            }
        });
    }
    

    然后在 MainActivity2 中使用这个来获取字符串:

        Bundle extra = getIntent().getExtras();
        String newString = extra.getString("NAME");
    

    【讨论】:

      【解决方案2】:

      在 setOnClickListener 中移动这一行: final String name = name.getText().toString();.

      此外,如果您想检查变量名称是否为空,您可以随时使用name.isEmpty()

      【讨论】:

        猜你喜欢
        • 2021-11-09
        • 2013-02-08
        • 1970-01-01
        • 2014-01-03
        • 1970-01-01
        相关资源
        最近更新 更多