0

嘿伙计们,我对 Android 编程相当陌生,但无论如何我对 .net 有一些经验,我想做的是创建一个类RestartDialog,然后从一个活动中调用这个类。通常在.net中我会使用:

RestartDialog rd = new RestartDialog();

rd.setType(EXTENDED_TYPE);
rd.show;

那么它将以扩展模式启动,但是在 Android 中,您需要 Intents 来启动活动,这是我正确的唯一方法吗?我知道我可以使用Intent.putExtraetc,但我需要先设置许多值。

请问我最好的选择是什么?在此先感谢您的帮助。

4

3 回答 3

1

首先,您需要创建一个Intent

Intent intent = new Intent();

将意图视为存储数据值的一种方式:

intent.putExtra("type", EXTENDED_TYPE);

当您完成将信息放入您的意图时,您开始活动:

startActivity(intent);

然后,在您的新活动中,您在 onCreate 方法中提取所需的值:

...
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.email_login_activity);

    Intent intent = getIntent();
    this.type = intent.getIntExtra("type", 0);

0在这种情况下,如果未设置额外的“类型” ,我会返回 getIntExtra 。

如果您还有其他问题,请告诉我。

于 2013-08-06T04:08:27.837 回答
1

Intent 是发送数据的方式。所以如果你必须发送很多数据,你可以使用Parcelable. 它也快得多..

如果您只是传递对象,那么Parcelable就是为此而设计的。使用它比使用 Java 的本机序列化需要更多的努力,但它更快(我的意思是,更快)。

从文档中,如何实现的一个简单示例是:

// simple class that just has one member property as an example
public class MyParcelable implements Parcelable {
    private int mData;

    /* everything below here is for implementing Parcelable */

    // 99.9% of the time you can just ignore this
    public int describeContents() {
        return 0;
    }

    // write your object's data to the passed-in Parcel
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mData);
    }

    // this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
    public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
        public MyParcelable createFromParcel(Parcel in) {
            return new MyParcelable(in);
        }

        public MyParcelable[] newArray(int size) {
            return new MyParcelable[size];
        }
    };

    // example constructor that takes a Parcel and gives you an object populated with it's values
    private MyParcelable(Parcel in) {
        mData = in.readInt();
    }
}

Observe that in the case you have more than one field to retrieve from a given Parcel, you must do this in the same order you put them in (that is, in a FIFO approach).

Once you have your objects implement Parcelable it's just a matter of putting them into your Intents with putExtra():
Intent i = new Intent();
i.putExtra("name_of_extra", myParcelableObject);

Then you can pull them back out with getParcelableExtra():
Intent i = getIntent();
MyParcelable myParcelableObject = (MyParcelable) i.getParcelableExtra("name_of_extra");

您也可以使用 GSON 发送数据。

于 2013-08-06T04:04:48.677 回答
0

虽然最简单的解决方案是:

使用 getter setter 创建具有静态数据成员的类。

从一个活动中设置并从另一个活动中获取该对象。

活动 A mytestclass.staticfunctionSet("","",""..etc.);

活动 b mytestclass obj= mytestclass.staticfunctionGet();

于 2013-08-06T04:09:03.837 回答