Java Android String Intent 在移动到上一个屏幕时显示 null

Java Android String Intent displaying null when moving to previous screen

所以我有一个屏幕,用户可以在其中输入他们的姓名,点击按钮后,他们将被重定向到一个显示他们姓名的菜单。

在菜单屏幕中,我有一个按钮可以将我带到另一个屏幕(关于我),在该屏幕上,我有一个带有返回菜单意图的按钮 Activity。

问题是,当我单击具有返回意图的按钮时,名称显示为空,而不是用户输入的名称。

当我使用实际的 android 导航按钮转到上一个屏幕时,不会发生这种情况,只有我创建的按钮返回菜单 Activity。


启动器Activity用户在其中输入他们的名字


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launcher_screen);

        Button launcherNextBtn = (Button) findViewById(R.id.launcherNextBtn);
        EditText launcherVisitorNameEditText = (EditText) findViewById(R.id.launcherVisitorNameEditText);
        TextView launcherVisitorNameErrorTextView = (TextView) findViewById(R.id.launcherVisitorNameErrorTextView);

        launcherVisitorNameErrorTextView.setText("");

        launcherNextBtn.setOnClickListener((View v) -> {

            String visitorName = launcherVisitorNameEditText.getText().toString();

            if (visitorName.equals("")) {
                launcherVisitorNameErrorTextView.setText("Please enter a value");
            } else {
                launcherVisitorNameErrorTextView.setText("");
                Intent goToMenuActivity = new Intent(LauncherScreen.this, MenuScreen.class);
                goToMenuActivity.putExtra("visitorName", visitorName);
                startActivity(goToMenuActivity);
            }
        });


菜单 activity 显示用户名的地方

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_screen);

        Button menuHomeBtn = (Button) findViewById(R.id.menuHomeBtn);
        Button menuAboutMeBtn = (Button) findViewById(R.id.menuAboutMeBtn);
        TextView menuNameTextView = (TextView) findViewById(R.id.menuNameTextView);

        String visitorName = getIntent().getStringExtra("visitorName");
        menuNameTextView.setText("Dear " + visitorName);

        menuHomeBtn.setOnClickListener((View v) -> {
            Intent goToLauncherActivity = new Intent(MenuScreen.this, LauncherScreen.class);
            goToLauncherActivity.putExtra("visitorName", visitorName);
            startActivity(goToLauncherActivity);
        });
        
        menuAboutMeBtn.setOnClickListener((View v) -> {
            Intent goToAboutMeActivity = new Intent(MenuScreen.this, AboutMeScreen.class);
            startActivity(goToAboutMeActivity);
        });
    }


关于我 activity,当我点击按钮返回菜单时,我得到“Dear null”

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about_me_screen);

        Button aboutMeBackBtn = (Button) findViewById(R.id.aboutMeBackBtn);

        String visitorName = getIntent().getStringExtra("visitorName");


        aboutMeBackBtn.setOnClickListener((View v) -> {
            Intent goToMenuActivity = new Intent(getApplicationContext(), MenuScreen.class);
            startActivity(goToMenuActivity);
        });
    }

您的问题在关于我activity屏幕

aboutMeBackBtn.setOnClickListener((View v) -> {
        Intent goToMenuActivity = new Intent(getApplicationContext(), MenuScreen.class);
        startActivity(goToMenuActivity);
    });

这次你没有传递额外的字段,所以你得到的是空值

回答 1

aboutMeBackBtn.setOnClickListener((View v) -> {
        onBackPressed();
    });

答案 2

aboutMeBackBtn.setOnClickListener((View v) -> {
        Intent goToMenuActivity = new Intent(getApplicationContext(), MenuScreen.class);
        goToMenuActivity.putExtra("visitorName", visitorName)
        startActivity(goToMenuActivity);
    });