3

私はプロジェクトに取り組んでおり、アクティビティがインテントを介して相互に情報を渡していました。しかし、私は最近、Singleton メソッドに切り替えて、すべてのデータを保持する Application クラスを用意することにしました。

少し混乱しています: インテントなしでアクティビティを開始するにはどうすればよいですか? 乗り換える前にかかってきた電話です...

    public boolean onOptionsItemSelected( MenuItem item ) {
    switch( item.getItemId() ) {
    case R.id.connect:
        startActivityForResult( new Intent( this, DeviceList.class ), REQUEST_CONNECT_DEVICE  );
        return true;

インテントを使用せずに DeviceList クラスを開始するには、何に変更すればよいでしょうか?

4

3 に答える 3

9

あなたはそうしない。インテントを使用してアクティビティを開始します。これがAndroidの設計方法です。

于 2012-06-15T18:15:26.923 に答える
3

はい、できます。まず、拡張する必要がありますActivityGroup

public class Activity1 extends ActivityGroup

次に、コンテンツ ビューを置き換えるために、そのクラスにメソッドを作成する必要があります。この場合はActivity1

public void replaceContentView(String id, Intent newIntent) {
    View view = getLocalActivityManager().startActivity(id,newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); 
    setContentView(view);   
}

Activity1からActivity2を開始したい場合、

Intent activity2 = new Intent(this, Activity2.class);
replaceContentView(Activity2.class.getName(), activity2 );

Activity2 から Activity3 を開始することもできます

Intent activity3 = new Intent(getParent().getApplicationContext(), Activity3.class);
Activity1 parent = (activity3 ) getParent();
parent.replaceContentView(Activity3.class.getName(), activity3 );

これが役立つことを願っています

PS :このリンクを参照できます

于 2012-06-15T18:58:07.310 に答える
1

Context2つのアクティビティ間でデータを渡すことは、インテントのロールだけではありません。パッケージ情報など のアクティビティを作成するために必要なその他の必須情報を渡します。

リンクとしての定義に従って

インテントはbstract description of an operation to be performedです。

于 2012-06-15T18:25:50.967 に答える