gpt4 book ai didi

java - 子Activity与父Activity之间数据传输失败

转载 作者:行者123 更新时间:2023-12-02 04:21:48 26 4
gpt4 key购买 nike

我正在设计一个多 Activity 记分板应用程序,其中每个 Activity 都允许用户记录各种运动的得分。目前,有两项 Activity 。主要 Activity 支持篮球记分,子 Activity 支持足球记分。每个 Activity 都有一个按钮,允许用户在两​​项运动之间切换。当用户导航到子 Activity 并在子 Activity 的屏幕上显示该数据时,我想将数据从父 Activity (篮球)发送到子 Activity (足球)。当用户导航回父 Activity 时,我想将相同的数据发送回父 Activity 。我使用了 startActivityForResult(Intent I, int requestCode) 和 onActivityResult(int requestCode, int resultCode, Intent data) 方法。

我已经运行了多次测试并确认没有数据从子 Activity 传输到父 Activity 。我相当确定 Android Studio 环境没有调用 onActivityResult() 。我在方法的最顶部放置了一个日志命令,但该消息没有显示在 logcat 中。我还尝试过“构建”->“清理项目”。我关闭并重新开放了工作室。我可以确认数据已成功从父方法发送到子方法。

这里是 JumpSoccer() 方法,它可以促进父级 -> 子级 Activity 切换。

 public void jumpSoccer(View view) {
/*
TESTING: SEND BASKETBALL DATA TO SOCCER ACTIVITY
*/

//send basketball data
Intent i = new Intent(this, Soccer.class);
Bundle extrasBall = new Bundle();
//team A info
EditText teamA = findViewById(R.id.teamA);
extrasBall.putString(EXTRA_TEAMA, teamA.getText().toString());
TextView scoreA = findViewById(R.id.scoreA);
extrasBall.putString(EXTRA_SCOREA, scoreA.getText().toString());
//team B info
EditText teamB = findViewById(R.id.teamB);
extrasBall.putString(EXTRA_TEAMB, teamB.getText().toString());
TextView scoreB = findViewById(R.id.scoreB);
extrasBall.putString(EXTRA_SCOREB, scoreB.getText().toString());
//add basketball bundle
i.putExtras(extrasBall);

//soccer bundle is global variable; initialized as null and given value in onActivityResult()
//send soccer data back
//if(extrasSoccer != null)
//i.putExtras(extrasSoccer);
startActivityForResult(i, SOCCER_REQUEST);
}

这里是 JumpBasketball 方法,它有助于子 -> 父 Activity 切换。

  public void jumpBasketball(View view){

Intent i = new Intent(this, MainActivity.class);

//get bundle sent from basketball activity and add to intent to send back
Bundle extrasBall = this.getIntent().getExtras();
i.putExtras(extrasBall);
startActivity(i);

注意:由于与此问题无关的原因,在此方法之前调用 getIntent() 一次

这里是 onActivityResult 方法,它应该处理从子 Activity 返回的数据。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//receive data and populate stat page (artificial memory) for basketball data and simply hold soccer data until it is returned
Log.d("oAR called", "success!");
super.onActivityResult(requestCode, resultCode, data);

//request code indicates origin of data
if (resultCode == RESULT_OK) {

if (requestCode == SOCCER_REQUEST) {
//get basketball bundle
Bundle extrasBall = data.getExtras();
//repopulate team A info
EditText teamA = findViewById(R.id.teamA);
teamA.setText(extrasBall.getString(EXTRA_TEAMA));
TextView scoreA = findViewById(R.id.scoreA);
scoreA.setText(extrasBall.getString(EXTRA_SCOREA));
//repopulate team B info
EditText teamB = findViewById(R.id.teamB);
teamB.setText(extrasBall.getString(EXTRA_TEAMB));
TextView scoreB = findViewById(R.id.scoreB);
scoreB.setText(extrasBall.getString(EXTRA_SCOREB));

}
}

}

我希望父 Activity 显示子 Activity 的数据,但事实并非如此。由于 logcat 中缺少上述日志消息,似乎 onActivityResult() 没有被触发。

最佳答案

在您的子 Activity 中,使用它返回父 Activity

Intent data = new Intent();
data.putExtra("bundleName", yourBundle);
setResult(RESULT_OK, data);
finish();

关于java - 子Activity与父Activity之间数据传输失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56632348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com