我已经在使用一个待定的意图..所以,如果我使用另一个意图并启动该意图,它将转到一个新的活动..我想避免这种情况。因此,我不想使用意图,而是想将数据从一个活动传递到另一种可能吗?
答案 0 :(得分:7)
您可以使用静态方法将数据从一个活动获取到另一个活动。下面是示例代码
第一项活动
public class First extends Activity {
static First INSTANCE;
String data="FirstActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
INSTANCE=this;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public static First getActivityInstance()
{
return INSTANCE;
}
public String getData()
{
return this.data;
}
}
第二项活动:
public class Second extends Activity {
String data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
data=First.getActivityInstance().getData();
Toast.makeText(Second.this,"Data from first activity is"+data, 1).show();
}
}
希望它对你有所帮助。
答案 1 :(得分:1)
如何设置全局变量类,然后在Activity1中设置它并在Activity2中访问它,如下所示:
全局变量类文件:Global.java
package <your packagename>;
public class Global {
public static String stringToPass = "";
}
在文件中设置全局变量:Activity1.java
Global.stringToPass = "your string value to pass";
startActivity(new Intent(Activity1.this, Activity2.class));
读取文件中的全局变量:Activity2.java
String gotString = "Global.stringToPass;
小心内存泄漏。
答案 2 :(得分:1)
您可以尝试使用Singleton
public class Singleton{
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if (instance == null){
instance = new Singleton();
}
return instance;
}
// your fields, getter and setter here
}
然后在你的第一个活动中
Singleton a = Singleton.getInstance();
a.setFoo("something here");
然后是你的第二个活动
Singleton b = Singleton.getInstance();
b.getFoo();
答案 3 :(得分:0)
您可以尝试使用全局类Application来共享您要发送的数据!只是在使用它们之前设置数据!