0

我可以在我的第一个活动中初始化对象,而你可以在所有活动中初始化它吗???

public class Calc{
    int x;
    int y;
    public Calc(int x, int y) {
       this.x = x;
       this.y = y;
    }
    public int sum() {
        return x + y;
    }
}
public class MainActivity extends Activity {

private int progressStatus = 0;
private Handler handler = new Handler();
private ProgressBar loading;
private static int progress;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    Calc c = new Calc(3, 4);
}
}


public class PreviewActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.preview);

            TextView txt = (TextView) findViewById(R.id.txt);
            txt.setText(Integer.toString(c.sum));
}
}

我如何在 MainActivity 中初始化 Calc 对象并使用它 PreviewActivity。

我如何将其传递给另一个活动或如何使其与其他活动共享

4

3 回答 3

2

Application通过扩展它并编写您的自定义类来使用Application类,并将您的对象保留在您需要的此类中Activities

class MyApplication extends Application{
    Object a;

    public void setA(Object a){
         this.a = a;
    }

    public Object getA(){
         return a;
    }

}

现在让我们假设在您的 A 活动中创建类对象Object并希望在 B 活动中使用它。

这样做,

class ActivityA extends Activity(){

...
// some where in activity, set your object this way.
     Object aObj = new Object();
     ((MyApplication)getApplication()).setA(aObj);


...

}

class ActivityB extends Activity(){

...
// some where in activity, get your object this way.
     Object aObj = ((MyApplication)getApplication()).getA( );


...

}

你需要告诉你androidManifest.xml关于你的扩展Application课程。

于 2012-07-04T16:28:57.967 回答
2

制作

public class Calc implements Serializable {
int x;
int y;
public Calc(int x, int y) {
   this.x = x;
   this.y = y;
}
public int sum() {
    return x + y;
}

}

当你开始你的 PreviewActivity

Intent intent = new Intent(mContext, PreviewActivity .class);
intent.putParcelableArrayListExtra("data",c);
startActivity(intent);

并在您的 PreviewActivity 中执行此操作

Calc c=(Calc ) getIntent().getSerializableExtra("data");
于 2012-07-04T16:16:14.890 回答
1

我如何将其传递给另一个活动或如何使其与其他活动共享

只需使用Intent

intent.putExtra("calc" new Calc(3, 4));

Object当你想开始另一个时传递这个Activity

然后在您的第二个Activity电话中:

Calc c = getIntent().getParcelableExtra("calc"); // getSerializableExtra("calc");

你的Calc班级必须实施ParcelableSerializable

public class Calc implements Parcelable { 
 ...
}
于 2012-07-04T16:11:10.813 回答