Androidの開発研究ノート - 関連活動

テントイベント

活動の概要

活性は、主にユーザと対話するために使用されるユーザインターフェースの形成を、含ま

手動プロセスを作成します。

新規作成Empty ActivityGenerate Layout Fileオプションは視覚的なインターフェイスであるレイアウトファイルを作成することで、Launcher Activityオプションは、メインイベントを開始するイベントを設定することです

すべての活動は、オーバーライドする必要がありonCreate()、メソッドを親クラスを呼び出すonCreate()方法を

作成layout、レイアウトファイルを保存するために新しいフォルダをしますLayout resource file

onCreate()追加機能

setContentView(R.layout.xxxlayout);

呼び出しsetContentView現在アクティブなレイアウトをロードするための方法を、パラメータは、レイアウトファイルのIDです

AndroidManifestファイルログイン、登録コード

<application 
......
    <activity android:name=".FirstActivity"></activity>
</application>

それが主な活動である場合、また、あなたが設定する必要が<intent-filter>ラベルを

<activity android:name=".FirstActivity"
    android:label="This is first activity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

使用破壊活動finish()

使用トースト

Toast.makeText(FirstActivity.this, "toast context", Toast.LENGTH_SHORT).show();

パラメータは以下のとおりです。コンテキスト、コンテンツと長さ

作成しmenu、新しいフォルダをMenu resource fileファイルに、追加したアイテムを

<menu .....>
    <item
        android:id="@+id/add_item"
        android:title="Add"/>
....
</menu>

そして、書き換えonCreateOptionMenu()方法

public boolean onCreateOptionMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

イベントに応答して、メニューを再定義

public boolean onOptionItemSelected(MenuItem item) {
    swich (item.getItemId()) {
    case R.id.add_item:
        .....
        bread;
    ...
    default:
    }
    return true;
}

イベント間のジャンプ

明示的な

まず、イベント、登録を作成

最初のイベントでジャンプしてクリックイベントを設定します。

public void onClick(View v) {
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    startActivity(intent);
}

意思は意思表現されます

暗黙

明示的にジャンプする活動を指定しますが、システムによって指定された条件は、ジャンプこれに活動を分析しないでください。

指定された条件は、アクションとカテゴリ情報である、両方の活動の目標を達成するために、ジャンプになります

<intent-filter>
    <action android:name="com.example.activitytest.ACTION_START"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

最初のイベントに追加します。

public void onClick(View v) {
    Intent intent = new Intent("com.example.activitytest.ACTION_START);
    startActivity(intent);
}

それぞれの目的は一つだけ指定することができますが、複数のカテゴリを持つことができます

intent.addCategory("com.example.activitytest.MY_CATEGORY");

これは、クラッシュするプログラムの活動に応答しませんでした

その他の暗黙の使い方

あなたはまたようにダイヤルアップや、ブラウザなどの他のプログラムの活動を呼び出すことができ
、たとえば、ブラウザに:

イベントをクリックして変更します

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com));
startActivity(intent);

ACTION_VIEWシステムが内蔵されているモーション、ブラウザを開くためにクリック

することが可能<intent-filter>に構成された<data>タブ、応答で現在アクティブになっているデータのタイプを指定

  • アンドロイド:スキーム契約
  • アンドロイド:ホストホスト
  • アンドロイド:ホスト名とポート後のパスの一部
  • アンドロイド:MIMEタイプのデータ型を処理することができます

データ転送

次のデータ転送アクティビティ

意図の一連を提供putExtra()リロード処理、ストアデータ、第2の開始イベントが、その後の意図から取り出し

String data = "hello";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", data);
startActivity(intent);

資格情報が鍵データを抽出して、第二の活動

Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");

活動への復帰に関するデータ

使用startActivityForResult()開始するには、それが活動の破壊の時に前のアクティビティに結果を返します

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);

1ライン上の値としてだけであれば、要求コードであります

2つ目のイベントのリターン書き込み論理で

Intent intent = new Intent();
intent.putExtra("data_return", "Hello Return");
setResult(RESULT_OK, intent);
finish();

setResult()2つのパラメータは、最初のものは、ステータス返された結果が意図して第二のデータであります

第大型活性におけるonActivityResult()方法

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    String returndata = data.getStringExtra("return_data");
                    Log.d("FirstActivity", returndata);
                }
                break;

            default:
        }
    }

コードは、要求のソースを決定するために使用されます

一時的なデータ保全活動

活性が提供onSavedInstanceState()活性が回収される前にコールバックメソッドがメソッド内に格納されている一時的なデータ、呼び出される
バンドルパラメータタイプを使用して

@Override
protected void onSavedInstanceState(Bundle outState) {
    super.onSavedInstanceState(outState);
    String tempData = "something";
    outState.putString("data_key", tempData);
}

onCreate()メソッドでは、バンドルパラメータデータは、このから回収することができるました

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);

        if (savedInstanceState != null) {
            String tempData = savedInstanceState.getString("data_key");
            ...
        }
    }

活動のスタートアップモード

一共4种、標準、singleTop、singleTask、singleInstance

かもしれAndroidManifest.xml指定するアクティビティandroid:launchMode選択した属性ブートモードを

  • 標準
    これは、新しいインスタンスを起動するたびに作成され、デフォルトの起動モードです

  • singleTop
    スタックのリターンスタックトップでの活動は、時にスタートアップ活動の新しいインスタンスを作成せずに、直接使用されますが、ない場合には、スタックの新しいインスタンスを作成します。

  • singleTask
    一つだけでアプリケーション全体の存在下での活性を、見つかった場合は、この活動がポップアップ表示されます、すべての活動に、開始前にスタックを復帰させるためのチェックは、スタックのインスタンストップを知って
    、それが存在しない場合作ります

  • singleInstanceの
    プログラムの活動は、通話に他のプログラムを可能にする、別々のリターンスタックの管理を作成し、イベントにアクセスするためのプログラムに関係なく、同じリターンスタックを共有します

チップ

現在のイベント情報を取得します。

1が現在アクティブであるかを決定するには?
新しいクラスBaseActivity、継承AppCompatActivity、書き換えのonCreate()メソッドを作成し、ステートメントが追加します

Log.d("BaseActivity", getClass().getSimpleName());

以上のプログラムに一度終了します

キャンペーンマネージャーとして新しいクラスを作成しますActivityCollector

public class ActivityCollector {

    public static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
        activities.clear();

    }
}

BaseActivityでの変更とonDestroyでのonCreate

//onCreate()
ActivityCollector.addActivity(this);
//onDestroy()
ActivityCollector.removeActivity(this);

退出の鍵

button3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ActivityCollector.finishAll();
    }
});

スタートアップ活動のベスト言葉遣い

梱包の方法、データの書き込みパラメータに

public static void actionStart(Context context, String data1, String data2) {
    Intent intent = new Intent(context, SecondActivity.class);
    intent.putExtra("param1", data1);
    intent.putExtra("param2", data2);
    context.startActivity(intent);
}

おすすめ

転載: www.cnblogs.com/burymyname/p/12119119.html