我知道如何使用全局变量将变量从一个活动传递到另一个活动。
e.g。 在one.java中:
GlobalVars.setColour(0);
在two.java中:
if (GlobalVars.getColour() == 0) ...
GlobalVariables.java:
private static int colour2;
public static int getColour() {
return colour2;
}
public static void setColour(int colour) {
colour2 = colour;
}
如果我在one.java中有一个数组并且我需要在另一个类中怎么办?
ArrayList<String> myArr = new ArrayList<String>();
myArr上传了手机电话簿中的联系人,因此它是动态的。我需要它在自定义对话框类中上传ListView及其元素。如何将其传递给另一个活动/对话框?
答案 0 :(得分:2)
您选择的方法(创建静态实例)将以与您对基元相同的方式(例如创建单例)对象ArrayList
之类的对象起作用。
但是,在大多数情况下,绝对不建议仅在活动之间传递数据来创建静态字段。原始数据和ArrayList<String>
都可以在用于启动另一个Activity的Intent中作为额外内容传递。
private ArrayList<String> mArray;
private String mString;
private int mValue;
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("arrayListExtra", mArray);
intent.putExtra("stringExtra", mString);
intent.putExtra("intExtra", mValue);
startActivity(intent);
所有这些数据类型(以及更多)都可以在Intent
中无缝传递。然后,您可以在另一侧访问它们,如下所示:
Intent intent = getIntent();
ArrayList<String> array = intent.getStringArrayListExtra("arrayListExtra");
String string = intent.getStringExtra("stringExtra");
int value = intent.getIntExtra("intExtra", 0);
如果要将数据传递给Dialog,则可以调用setter方法并传递任何所需内容,而不必担心活动之间存在的边界。例如,使用自定义Dialog在对话框中实现一个方法,以便在显示之前设置该值。
public class MyDialog extends Dialog {
private ArrayList<String> mItems;
//All other methods of the dialog here
public void setItems(ArrayList<String> items) {
mItems = items;
}
}
然后,在您计划创建的活动的任何方法中,并显示对话框
//theArray is your ArrayList<String> with data.
MyDialog dialog = new MyDialog();
dialog.setItems(theArray);
dialog.show();
请注意,这是将项目列表传递给AlertDialog以供显示的方法。这些对话框还有像setItems()
这样的方法,可以在显示数据之前传递数据。如果您是“活动”为您管理对话框(您从“活动”中调用showDialog()
),请在onCreateDialog()
或onPrepareDialog()
中调用设置者...以更合适的方式。
希望有所帮助!
答案 1 :(得分:1)
如果您要将数据从Activity
发送到另一个Intent
,则应使用Intent intent = new Intent().setClass(getApplicationContext(), CollegeDetails.class);
intent.putExtra("key", objectvalue);
startActivity(intent);
。例如:
{{1}}
答案 2 :(得分:0)
在我看来,对于内容提供商来说,这听起来像是一个理想的机会
如果不熟悉它们,请看这里: http://developer.android.com/guide/topics/providers/content-providers.html
答案 3 :(得分:0)
您需要创建要在其他类中使用的类的实例,然后访问该数组。
Public Class MyClass
{
public ArrayList<String> myArr = new ArrayList<String>();
}
Public Class MyClassTwo
{
private myClassInstance = new MyClass();
myClassInstance.myArr = "hello world";
}