【Android開発-8】ライフサイクル、Activityで別のActivityを開く

6134 ワード

前言:生命の中で多くの人が自分に付き添って一生の中のある旅を歩いたが、一部の人はある段階に現れただけで、一部の人は自分に付き添って長い間いた.小学校、中学校、高校、大学のように、長い間持っていると思っていたものは、天涯各地の忙しい生活を経験したり、意のままになったり、失意したりしたことがあります.だんだんそれらの画面は思い出しか残っていません.天涯はそれぞれ安命して、いっしょにいることができるのは尽力して大切にしましょう、いっしょにいないで心から祝福して、私达はすべて1种の姿が生活していく必要があります!AndroidのActivityの生命の中で、私たちはいつも別のActivity、つまり別のインタフェースを開く必要があります.この可能性のある時間は短く、メインインタフェースに戻ります.しかし、この2つのActivityは、それぞれのライフサイクルの中で生命のある段階を経験しています.
このプロジェクトは前編のプロジェクトに関連内容を追加し、プレゼンテーションを行い、プロジェクト構造は以下の通りである.
ステップ1:layoutに別のインタフェースレイアウト、すなわちactivity_を追加sub.xml、コードの内容は以下の通りです.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
 >

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <Button 
        android:id="@+id/close"
        android:layout_below="@id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/close" 
        />

</RelativeLayout>

もちろんメインインタフェースactivity_sub.xmlコンテンツの再レイアウトでは、コードは次のとおりです.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <Button 
        android:id="@+id/open"
        android:layout_below="@id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/open" 
        />

</RelativeLayout>

ステップ2:valuesディレクトリのstrings.xmlで作成されたコードの内容は次のとおりです.
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">TestActivity</string>
    <string name="hello_world">Test Activity life cycle</string>
    <string name="close">  </string>
    <string name="open">        </string>
</resources>

注:このファイルの中のものはlayoutインタフェースのレイアウトで使うものです.たとえばandroid:text="@string/open"のopenはに対応して別のインタフェースを開きます.このインタフェースのレイアウトが完了すると、プログラムインタフェースボタンは「別のインタフェースを開く」と表示されます.
ステップ3:srcにファイルを新規作成するJAva、コードは以下のように記述されています.
package com.wyz.testactivity;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SubActivity extends Activity {

	private static final String TAG="SubActivity";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sub);
		
		Log.d(TAG, "    --    (onCreate)");
		
		Button btn_close = (Button)findViewById(R.id.close);
		
		btn_close.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				SubActivity.this.finish();	//  
			}
			
		});
	}
	
	protected void onStart()
	{
		super.onStart();
		Log.d(TAG, "    --    (onStart)");
	}
	
	protected void onResume()
	{
		super.onResume();
		Log.d(TAG, "    --    (onResume)");
	}
	protected void onPause()
	{
		super.onPause();
		Log.d(TAG, "    --      (onPause)");
	}
	
	protected void onStop()
	{
		super.onStop();
		Log.d(TAG, "    --      (onStop)");
	}
	
	protected void onRestart()
	{
		super.onRestart();
		Log.d(TAG, "    --    (onRestart)");
	}
	
	protected void onDestory()
	{
		super.onDestroy();
		Log.d(TAG, "    --    (onDestory)");
	}
}

それから私たちもMainActivityを修正します.JAva、サブインタフェースを開くことができます.
package com.wyz.testactivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	private static final String TAG="MainActivity";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Log.d(TAG, "    --    (onCreate)");
		
		Button btn_open = (Button)findViewById(R.id.open);
		
		btn_open.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				startActivity(new Intent(MainActivity.this, SubActivity.class));	//        
			}
			
		});
	}
	
	protected void onStart()
	{
		super.onStart();
		Log.d(TAG, "    --    (onStart)");
	}
	
	protected void onResume()
	{
		super.onResume();
		Log.d(TAG, "    --    (onResume)");
	}
	protected void onPause()
	{
		super.onPause();
		Log.d(TAG, "    --      (onPause)");
	}
	
	protected void onStop()
	{
		super.onStop();
		Log.d(TAG, "    --      (onStop)");
	}
	
	protected void onRestart()
	{
		super.onRestart();
		Log.d(TAG, "    --    (onRestart)");
	}
	
	protected void onDestory()
	{
		super.onDestroy();
		Log.d(TAG, "    --    (onDestory)");
	}
}

最後のステップ:AndroidManifestを修正します.xml、ノードの前に次のように追加します.
 <activity  
            android:name=".SubActivity"  
            android:label="@string/app_name" >  
 </activity> 

この追加の役割は、プログラムに別のインタフェースが存在することを知らせることです.
注:android:nameはサブインタフェースのクラス名です
インタフェースの効果は次のとおりです.