【问题标题】:Transfer data from one screen to another [duplicate]将数据从一个屏幕传输到另一个屏幕[重复]
【发布时间】:2019-05-10 20:46:49
【问题描述】:

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

【问题讨论】:

  • 你需要创建一个新的 Fragment/Activity 并使用 Bundle 发送数据
  • 您需要存储它以供以后使用还是仅用于当前应用会话?
  • 昏暗,暂时只是当前应用会话的一次性操作,所以每次关闭应用时数据都会被删除,打开应用时必须重新输入再次。

标签: java android android-studio


【解决方案1】:

如果你想将数据从一个活动传递到另一个活动,你应该在 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()getIntExtra() 等相关方法。

通过你的课程

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

【讨论】:

    【解决方案2】:

    为了跨意图传递信息:

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

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

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

    【讨论】:

      【解决方案3】:
      startActivity(new Intent(CurrentActivity.this, AnotherActivity.class).putExtra(KEY, DATA));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        • 2021-11-08
        • 2022-12-07
        • 2019-10-27
        • 2022-01-04
        相关资源
        最近更新 更多