我有三个活动A,B和C.我需要将一些数据从活动A传递给活动C.但导航是从A到B到C,即我不能直接从活动A转到活动C.我不想将我的数据从A传递给活动B,我不想使用任何外部存储,如sqlite或共享首选项。可以通过意图来完成吗?如果有,怎么样?如果不是,还有其他方法吗?
答案 0 :(得分:0)
使用Interface与其他Activity进行通信。
或者您可以在Activity1上创建变量sendkeys()
答案 1 :(得分:0)
有多种方法可以将数据从一个活动发送到其他活动,
现在因为你不能使用intent所以我建议你使用Application类或创建一个Global单例类来保存你的数据。
请参阅以下链接 https://androidresearch.wordpress.com/2012/03/22/defining-global-variables-in-android/
以下是创建应用程序类的步骤: 第1步:创建任何类并使用Application类扩展它:
public class Globals extends Application{
private int data=200;
public int getData(){
return this.data;
}
public void setData(int d){
this.data=d;
}
}
步骤2:在清单文件中定义应用程序类:
<application
android:name=".Globals"
.... />
步骤3:现在通过在您获得应用程序类的任何活动中调用getApplication()。只需对其进行类型转换并调用所需的方法。
Globals g = (Globals)getApplication();
int data=g.getData();
我希望这会有所帮助。
答案 2 :(得分:0)
问题是你的第三个活动无法知道发送捆绑包的活动。您需要添加一个字段来标识此类型的捆绑包,以便您可以相应地进行处理。例如,在活动1中:
Intent i = new Intent(ActivityOne.this, ActivityTwo.class);
i.putExtra("activity", (int)1);
i.putExtra("key", value);
startActivity(i);
然后在第3次活动中:
Bundle extras = getIntent().getExtras();
if(extras !=null) {
int typeAct = extras.getInt("activity");
if (typeAct == 1) {
//do something with data
}
答案 3 :(得分:0)
制作一个界面:
public interface PassData {
public void data(String data);
}
如果要将数据从活动A传递到活动C,则: 从活动A你需要传递这样的数据:然后在活动A。
PassData passData;// make it global variable
passData.data("Your DATA WHICH YOU WANT TO SEND TO ACTIVITY C");
在活动C中:
ActivityC extends AppCompatActivity implements PassData{
//onCreate Stuff
@Override
public void data(String data) {
// print this data and see it's coming or not
}
答案 4 :(得分:-1)
是的确定。 例如在你的活动中
class ActivityA extend Activity{
public static String abc = "hello";
}
in ActivityC
ActivityC extend Activity{
onCreate(){
String a = ActivityA.abc;
Log.d("test",a);
}
}