gpt4 book ai didi

android - 使用 Extra 将数据传递给 Android 中的不同 Activity

转载 作者:行者123 更新时间:2023-11-29 21:02:20 26 4
gpt4 key购买 nike

我不知道这是否可行。我所拥有的是一个有多个按钮的 Activity 。每个按钮将用户带到一个新的 Activity ,用户在其中输入一些数据(即名字)和一个返回主 Activity 的完成按钮。我还有一个摘要按钮,它将显示从各种按钮输入的所有内容。我了解如何将数据传递到新 Activity ,但有没有办法将数据传递到第三个 Activity ?

**让我看看是否可以更好地澄清我的问题。我有 3 个 Activity (A、B、C)。 Activity A 是我的主要 Activity ,我想从 A 转到 Activity B 并添加一些数据(如名称)。然后在 Activity B 中,当我单击“完成”按钮时,我返回到 Activity A。在 Activity A 中,我单击“摘要”按钮并转到 Activity C。在 Activity C 中,我应该看到一个 TextView ,其中包含我在 Activity B 中输入的信息。* *

任何帮助或指导都会很有帮助。谢谢。这就是我开始在两个 Activity 之间传递数据时所拥有的:

此按钮会将您带到输入名称的页面

  //button to display event name
mEventNameButton = (Button) findViewById(R.id.eventNameButton);
mEventNameButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventName.class);
startActivity(i);
}
});

在 EventName Activity (第 1 个)中,这是我为完成按钮添加的代码:

     mEventNameDoneButton = (Button)findViewById(R.id.eventNameDoneButton);
mEventNameDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventName.this, EventDetails.class);
i.putExtra("eName", mEventNameEditText.getText().toString());
startActivity(i);
}
});

这里是 EventDetails Activity (第 2 个)上的摘要按钮

  mEventSummaryButton = (Button)findViewById(R.id.eventSummaryButton);
mEventSummaryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventSummary.class);
startActivity(i);
}
});

最后是在 EventSummary Activity 中显示额外内容的代码(第 3 次)。

 mResultEventName = (TextView)findViewById(R.id.resultEventName);

Intent i = getIntent();
String eName =i.getStringExtra("eName");

//display info
mResultEventName.setText("Event name has been set: " + eName);
}

我得到的是“事件名称已设置为空”

**编辑**这是我尝试但不理解如何将 onActivityResult 用于 Activity C 的方法。更新代码: Activity A

      //button to display event name
mEventNameButton = (Button) findViewById(R.id.eventNameButton);
mEventNameButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventName.class);
startActivityForResult(i, 1);
}
});

//button to display event summary
mEventSummaryButton = (Button)findViewById(R.id.eventSummaryButton);
mEventSummaryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventDetails.this, EventSummary.class);
startActivity(i);
}
});



}

@Override
protected void onActivityResult(int RequestCode, int resultCode, Intent data){
if (data == 1)
{
return;
}

}

Activity B代码:

//done button to go back to event details
mEventNameDoneButton = (Button)findViewById(R.id.eventNameDoneButton);
mEventNameDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EventName.this, EventSummary.class);
i.putExtra("eName", mEventNameEditText.getText().toString());
setResult(RESULT_OK, i);
finish();
startActivity(i);
}
});

为 onActivityResult 编辑:

@Override
protected void onActivityResult(int RequestCode, int resultCode, Intent data){
if (data != null)
{
final String eventName = data.getStringExtra("ename");
//button to display event summary
mEventSummaryButton = (Button)findViewById(R.id.eventSummaryButton);
mEventSummaryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent i = new Intent(EventDetails.this, EventSummary.class);
i.putExtra("ename", eventName.toString());
startActivity(i);
}
});
}

最佳答案

如果我没理解错的话,问题是你想在EventSummary中显示eName,它是由EventDetails启动的,但是字符串属于intent开始 EventDetails。我认为你缺少的是某种方式,

Intent i = new Intent(EventDetails.this, EventSummary.class);
i.putExtra("eName", getIntent().getStringExtra("eName"));
startActivity(i);

编辑

我阅读了您的更新,它确实改变了您的问题。我猜你可以使用 startActivityForResult 从 A 启动 B,以便为 A 提供你想要传递给 C 的信息。为此,你必须在内部实现 onActivityResult A. 当你完成 B 时,调用

setResult(int, Intent); 
finish();

on B. A的onActivityResult会被调用,在它的第三个参数里面,和你提供给setResult的intent一样,你可以提取你需要提供的信息给C

编辑2:onClickListner 中的代码应如下所示:

mEventNameDoneButton = (Button)findViewById(R.id.eventNameDoneButton);
mEventNameDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent();
i.putExtra("eName", mEventNameEditText.getText().toString());
setResult(RESULT_OK, i);
finish();
}
});

在 Activity A 中:

@Override
protected void onActivityResult(int RequestCode, int resultCode, Intent data){
if (data != null)
{
// get eName from data
// create the new intent to start C
// add eName
// start C
}

关于android - 使用 Extra 将数据传递给 Android 中的不同 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667351/

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