将数据从一个屏幕传输到另一个屏幕

时间:2018-12-09 22:41:00

标签: java android android-studio

我目前正在为我的编程课开发一个项目,它是我决定为最终项目做的d&d角色创建者。我几乎完成了,但是遇到了一个问题。我想从用户创建字符的屏幕中获取用户数据并将其存储到可以查看其创建的字符的屏幕中,但是我不确定如何执行此操作。这是来自创建字符屏幕的代码:

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

    Button btnSave = (Button)findViewById(R.id.btnSaveChar);
    btnSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (checkData())
                startActivity(new Intent(NewCharScreen.this, HomeScreen.class));
        }
    });

    Button btnEx = (Button)findViewById(R.id.btnExplanation);
    btnEx.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(NewCharScreen.this, ExplanationScreen.class));
        }
    });
}

private boolean checkData(){
    final EditText charName = (EditText) findViewById(R.id.txtNameInput);

    if (charName.getText().toString().isEmpty()){
        charName.setError("Enter character name");
        charName.requestFocus();
        return false;
    }

    return true;
}

}

如果需要我的其余代码或项目本身,请访问GitHub上存储库的链接: https://github.com/cbetlinski98/MAD105-final_project

3 个答案:

答案 0 :(得分:4)

如果您要将数据从一个活动传递到另一个活动,则应将其传递到Intent对象中,因此在StartActivity中创建数据的想法可以在外部将其作为普通对象创建,并使用putExtra()将数据放入其中。

Intent intent = new Intent(getBaseContext(), DestinationActivity.class);
intent.putExtra("OBJECT_PARAM_NAME", your_object);
startActivity(intent);

要恢复有关其他活动的数据,您可以使用

String sessionId= getIntent().getStringExtra("OBJECT_PARAM_NAME");

通过基本类型

如果您需要传递基本对象(例如int,float,strings),则始终可以使用putExtra()传递它们,但是要将它们带入目标活动中,则有相对方法,例如getStringExtra()或{{1 }}等。

通过课程

如果您的用户是您定义的类,则可以在该类中实现getIntExtra(),使用Serializable将其放入意图中,然后使用putExtra()从其他活动中将其恢复,然后将其转换为您的类,然后再将其放入对象中

答案 1 :(得分:2)

为了跨意图传递信息:

Intent i = new Intent(this, Character.class);
myIntent.putExtra("paramKey","paramValue1");
startActivity(i);

然后在您的活动中获取参数:

Intent i2 = getIntent();
 i2.getStringExtra("paramKey");

答案 2 :(得分:1)

startActivity(new Intent(CurrentActivity.this, AnotherActivity.class).putExtra(KEY, DATA));