将接口从类传递给活动

时间:2016-02-15 08:28:39

标签: android android-intent interface serializable

如果我的课程中有一个对象形式界面,我怎么能把它传递给活动?

我的解决方案是将其更改为静态对象,它工作正常但有时会因为垃圾收集器无法收集的所有旧引用而导致内存泄漏,并且我无法实现' Serializable&# 39;在我的界面上。

public class MyClass {
     protected OnStringSetListener onstringPicked;
        public interface OnStringSetListener {
            void OnStringSet(String path);

        }
    //......//
      public void startActivity(){
                Intent intent=new Intent(context,Secound.class);
                // ?! intent.putExtra("TAG", inter);
                context.startActivity(intent);
      }
}

2 个答案:

答案 0 :(得分:0)

传递自定义对象有点复杂。您可以将该类标记为Serializable 让Java来处理这个问题。然而,在Android上,使用Serializable会带来严重的性能损失。解决方案是使用Parcelable。

Extra info

答案 1 :(得分:0)

在我看来,使用Bundles将是一个不错的选择。实际上捆绑包内部使用Parcelables。所以,这种方法是一种很好的方式。

假设您希望将类型为MyClass的对象传递给另一个Activity,您只需要添加两种方法来压缩/解压缩到捆绑包中。

To Bundle:

public Bundle toBundle(){
    Bundle bundle = new Bundle();
    // Add the class properties to the bundle
    return bundle;
}

来自Bundle:

public static MyClass fromBundle(Bundle bundle){
    MyClass obj = new MyClass();
    // populate properties here
    return obj;
}

注意:然后,您只需使用putExtra将捆绑包传递到其他活动即可。请注意,处理包比Parcelables简单得多。