Android入門——4大コンポーネントのActivity

4704 ワード

Activityの作成方法


1.Activityを作成activityライフサイクルの重要な方法であるonCreate()でActivityを作成する方法を実装します.合計4ステップ:
  • step 1:クラスを新規作成し、AppCompatActivityクラスまたはActivityクラスを継承します.Activityクラスとは異なり、AppCompatActivityのデフォルトにはタイトルバーがあり、v 7パッケージにあり、Android studioのプロジェクトもデフォルトでAppcompatActivityクラスを継承しています.
  • step 2:書き換え方法onCreate()
  • step 3:このActivityに表示されるレイアウトファイルをsetContentView()メソッドで設定します.
  • step 4:最後に必ずAndroid ManifestプロファイルにActivityを宣言し、メインアクティビティであればintent-filterラベルを付ける必要があります.

  • 2.ページジャンプの実装(1)結果のないページジャンプがあるページから別のページにジャンプしてから、ジャンプして戻るときにデータを持ち帰る必要がない場合は、Intent(意図)クラスをそのまま使用すれば簡単に実現できます.
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /* 
            * 1.  Intent , ( .this, .class)
            * 2.  startActivity , Intent 
            */
            Intent intent = new Intent(MainActivity.this,SecondActivity.class);
            startActivity(intent);
        }
    

    (2)結果のあるページジャンプテスト:MainActivityからSecondActivityにジャンプし、いくつかのトランザクションを処理し、MainActivityに戻ると、いくつかのデータを持ち帰る.
  • MainActivityページ
  •     protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /*  (MainActivity )
            * 1.  MainActivity Intent , ( .this, .class)
            * 2.  startActivityForResult , (Intent ,MainActivity int )
            * 3.  onActivityResult , intent.getExtra() 
            * */
            Intent intent = new Intent(MainActivity.this,SecondActivity.class);
            startActivityForResult(intent,1);
        }
    
        // ( Activity :1, Activity :2,intent )
        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode == 1 && resultCode == 2){
                assert data != null;
                String data_result = data.getStringExtra("key");
            }
        }
    
  • SecondActivityページ
  •     private String data = "hello world";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /*  (SecondActivity )
             * 1.  MainActivity Intent 
             * 2.  intent.putExtra , (key,value)
             * 3.  setResult , (SecondActivity int ,intent )
             * 4.  finish() Activity 
             * */
            Intent intent = new Intent();
            intent.putExtra("key",data);
            setResult(2,intent);
            finish();
        }
    

    Activity起動の別の方法:匿名起動


    以下に示すように、Manifest.xmlファイルでは、bを挿入してプロパティandroid:nameを追加できます.これにより、他のActivityは、Activityの実際のクラス名ではなく、この名前でActivityをstartすることができます(他のAppのインタフェースを呼び出すときに使用されますが、自分のApp内部ではこのような方法を使用する必要はありません).
            
                
                     // Activity 
    				//category Activity 
                     
                
            
    
    // :
    		Intent intent = new Intent();
    		intent.setAction("jieko");
    		startActivity(intent);
    

    ブラウザ、ライブラリ、カメラ、メール、電話など、システムに組み込まれたアプリケーションを呼び出すこともできます.例は次のとおりです.
    		// 
    		Intent intent = new Intent();
    		intent.setAction(Intent.ACTION_VIEW); //Intent , app
    		Uri uri = Uri.parse("...");
    		intent.setData(uri);
    		startActivity(intent);
    

    余分な小物


    プログラム全体をいつでもどこでも終了


    ユーザーは1つのアプリを使用する場合、多くのページで直接プログラムを終了する考えがあるかもしれませんが、backを押すとずっと戻ってきて不便で、ホームキーを押すとプログラムを掛けるだけで、プログラムを終了しません.この場合、追加、削除、およびすべての削除を含むすべてのアクティビティを管理する専門のコレクションクラスを書くことができます.次のようになります.
    public class ActivityCollector {
    	public static List 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();
    	}
    }
    

    コードは分かりやすいので、ActivityのonCreate()メソッドごとにActivity Collectorを追加します.その後、各ActivityのonDestory()メソッドにActivity Collectorを追加します.removeActivity(this)最後に「ワンクリック終了」の機能を追加したいところにActivity Collectorを追加します.finishAll()でいいです.
    もちろん、すべてのアクティブなコードを破棄した後、現在のプロセスを殺すコードを追加して、プログラムが完全に終了することを保証することもできます.プロセスを殺すコードは以下の通りです.android.os.Process.killProcess(android.os.Process.myPid());