-1

我目前正在为我的编程课做一个项目,这是我决定为我的最终项目做的一个 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

4

3 回答 3

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()or等​​相关方法getIntExtra()和许多其他方法。

通过你的课

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

于 2018-12-09T22:50:22.617 回答
2

为了跨意图传递信息:

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

然后在你的activity中获取参数:

Intent i2 = getIntent();
 i2.getStringExtra("paramKey");
于 2018-12-09T22:45:07.240 回答
1
startActivity(new Intent(CurrentActivity.this, AnotherActivity.class).putExtra(KEY, DATA));
于 2018-12-09T22:53:40.460 回答