将EditText传递给新的Activity

时间:2019-04-18 18:45:17

标签: java android

我有main_activity.xml EditText和一个Button

EditText内插入一个名称,然后单击Button,将出现一个具有新布局的新活动。

现在,我想在新活动(hiscores.xml)中使用EditText中的值,但是应用程序崩溃了。

我的MainActivity如下:

package com.example.test;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private Button button;

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

        button = findViewById(R.id.continue_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openHiScore();
            }
        });
    }

        public void openHiScore(){
            Intent intent = new Intent(this,HiScore.class);
            startActivity(intent);

        }

}

然后,在HiScore内部,代码是;

package com.example.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;


public class HiScore extends AppCompatActivity {

    EditText Name= (EditText)findViewById(R.id.username_text);
    String UserName = Name.getText().toString();

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

如何正确获取插入EditText中的值以在字符串UserName中使用它?

谢谢!

2 个答案:

答案 0 :(得分:0)

使用分发包将数据从一个活动发送到另一活动。将数据存储到分发包中,并创建一个意图以放置额外的分发包以通过它。

public void openHiScore(){
            Intent intent = new Intent(this,HiScore.class);
            Bundle b = new Bundle();
            b.putString("name", editText.getText().toString());
            intent.putExtras(b)
            startActivity(intent);

        }

In the HiScore class extract the data from the Bundle.

public class HiScore extends AppCompatActivity {

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

        Intent in = getIntent();
        // get the Bundle that stores the data of this Activity
        Bundle b = in.getExtras();

        // getting data from bundle
        String name = b.getString("name");
    }
}

答案 1 :(得分:0)

要将数据从一项活动传递到另一项活动,您需要将数据作为额外添加到您的intent

    public void openHiScore(){
        Intent intent = new Intent(this,HiScore.class);
        intent.putExtra("NAME_INPUT",nameString)
        startActivity(intent);
    }

然后在接收活动中,您想要从intent检索名称:

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hiscore);
        String name = getIntent().getStringExtra("NAME_INPUT");    
    }