我正在尝试使用从Activity3检索到Activity1的值。这是我的流程:
活动1调用活动2→ Activity2.finish(),调用Activity3→ 活动3.doSomethingAndGetValue()→ 活动3.finish()→ 活动1.useDoSomethingAndGetValue();
我找不到将值从Activity3发送回Activity1的方法;即使使用start ActivityForResult(),因为那时Activity2已经被销毁了。
我尝试使用一个可序列化的接口并将其作为意图上的额外值传递,但此解决方案仅适用于传递的对象是静态的,它不允许我对活动1上的当前成员变量进行任何更改。
此外,我尝试了所有这些选项,但都没有成功:
https://stackoverflow.com/a/17306696/3217203
(我不允许为此使用共享首选项)
有人知道吗?
注意:我不能添加eventBus,我知道会很棒,而且更容易,但是架构不允许我。
可以使用setter和getter pojo类
设置活动3中的值并在活动1中使用它们。
public class MyPojo {
private static String value;
public static String getValue() {
return value;
}
public static void setValue(String value)
{
MyPojo.value = value;
}
}
在活动3中,
MyPojo。setValue(“这是activity3”);
然后在活动1中,
MyPojo.get值();
如果您的数据要求仅限于您描述中的三项活动,我建议您在进入活动3之前不要完成活动2。相反,请使用活动。从activity3返回activity2时,调用finish(),然后返回activity1。
如果上述解决方案不可接受,请尝试以下2种方法:
(1) 您可以在应用程序上下文中使用变量。为此,首先创建一个应用程序类,比如MyApp。Java语言
public class MyApp extends Application {
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
现在,将这个类添加为清单中应用程序标签的android: name
,
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tony.myapp">
<application
android:name=".MyApp"
.....>
在活动3中,
String data = "I am BATMAN!!";
MyApp myApp = (MyApp) getApplicationContext();
myApp.setData(data);
然后,在活动1中你需要做的就是,
MyApp myApp = (MyApp) getApplicationContext();
String data = myApp.getData();
(2) 如果您想要持久化应用程序的不同实例的简单键值对,请使用SharedReferences。
在启动活动2和3时,您可能希望使用intent标志flag\u ACTIVITY\u FORWARD\u结果,如intent中所述。
代码
Activity 1 -> startActivityForResult(activityB,0);
Activity 2 -> activityCintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityCintent); finish();
Activity 3 -> setresult(10); finish();
Activity 1 -> if(result==10) {dofunction(); }
这是FLAG_ACTIVITY_FORWARD_RESULT的逻辑。首先,您为结果启动一个活动,新活动将此意图发送到另一个新活动,直到您设置结果。
我有两个活动,它们应该使用意图相互传递数据。我不确定在哪里放置一些看跌期权和看跌期权。 对于Activity1(MainActivity),我有一个按钮,按下它会创建一个意向,然后将其放入Activity2,然后使用startActivity(意向)启动它。 然后在Activity2中,我使用getIntent在onCreate()函数中获取该信息。 现在我想做的是在Activity2中有一个按钮
我有两项活动。两者都已实现surfaceview。在第一个活动中,我有一个名为score1的变量,我想将score1中的值传递给第二个活动。 每次我运行应用程序时,它在完成第一个活动后崩溃,并尝试加载第二个活动。在我编写代码以获取第二个活动中的额外意图之前,一切都很好。 我的第一个活动有这样的意图: 在我的第二个活动中,以下代码试图获取score1变量的值: 我不明白为什么每次activity o
我想在按下按钮时将一个活动中编辑文本的值传递给另一个活动,并在我的代码中使用该值。然而,在这些活动之间还有一个活动,我不想在其中使用该值 我的活动1包括: 用户从Activity1转到Activity2 活动2 用户从Activity2转到Activity3 活动3 在这里,我想将该值用作字符串。
我有一个关于Android动画的问题。我做了一个应用程序,其中有很多产品,你可以切换产品现在通过滑动屏幕左右(到下一个产品在列表),但它只是加载像任何其他活动现在。 我的产品就是活动,现在是这样切换的:
我试图将一个活动(LensActivity)中的ArrayList中的值传递给我的主活动上的TextView。在这个网站上,我找到了Intent方法并进行了实验,但似乎无法传递它,信息被提取到字符串lensString中,并传递到Intent,但在主活动中似乎没有传递或获取TextView,在一些实验中,由于getIntent在主活动中,我得到了一个空指针。 这是LensActivity的代码,它
我试图在我的android应用程序中的两个活动之间传递数据,我想使用HashMap(我不想使用Intent)。以下是我的代码: DataHolder.java 在第一个活动中设置值 在其他活动中获得价值 当我用它在activity1到activity2之间传递数据时,它会起作用,但在那之后,当在activity2到activity3之间传递数据时,返回null,因此强制转换为(整数)会导致错误。在