テントイベント
活動の概要
活性は、主にユーザと対話するために使用されるユーザインターフェースの形成を、含ま
手動プロセスを作成します。
新規作成Empty Activity
、Generate 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);
}