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

作る

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 に答える
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 に答える
1

どうすれば別のアクティビティに渡すことができますか、または他のアクティビティと共有するにはどうすればよいですか

インテントを使用するだけです。

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

Object別のを開始したいときにこれを渡すためActivity

次に、2番目Activityに電話するだけです。

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

そして、あなたのCalcクラスは実装する必要がありますParcelableまたはSerializable

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