ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
新しい Activity を追加して MainActivity より呼び出し、MainActivity に戻る処理 : Android Studio + tools.jar
日時: 2016/05/10 15:36
名前: lightbox



ダウンロード
tools.jar

▼ ソースコードと簡単な説明
Android Studio のテストの時間を短縮する為のいくつかの static メソッドをまとめた Tools クラス


基本環境は以下を参照して下さい
Android Studio で tools.jar を使用して基本的なアクションを簡単に実装する


Android Studio では、同じパッケージに新規で Activity を追加すると、AndroidManifest.xml には自動的に定義が追加され、画面も作成されます。
<?xml version="1.0" encoding="utf-8"?>
<manifest package="lightbox.may.toolstest"
          xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".Main2Activity">
        </activity>
    </application>

</manifest>
メンテナンス

MainActivity ( No.1 )
日時: 2016/05/10 15:44
名前: lightbox


日時: 2016/05/10 15:44
名前: lightbox
BUTTON1 は Tools クラスを使用した Main2Activity の呼び出しで、requestCode は 1 です。

BUTTON2 は、Tools クラスで、WEB上のデータを取得して Main2Activity に引き渡す一般的なコードです( requestCode は 2 です )
※ この際、requestCode もテストとして引き渡しています

BUTTON3 は、Tools クラスで ブラウザを呼び出しています
package lightbox.may.toolstest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import jp.android.work.Tools;

public class MainActivity extends AppCompatActivity {

	private TextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// ボタンのイベントを登録
		MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Tools.callActivity(MainActivity.this,Main2Activity.class, 1);

			}

		});

		// ボタンのイベントを登録
		MainActivity.this.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Tools.callHttpGet(
					"http://textt.net/sworc/20160508091416.txt",
					"utf-8",
					new Tools.OnAsyncTaskListener() {
						@Override
						public void onAsyncTaskListener(String s) {
							Intent intent = new Intent(MainActivity.this, Main2Activity.class);
							intent.putExtra("requestCode",2);
							intent.putExtra("text",s);
							startActivityForResult(intent, 2);
						}
					});

			}

		});

		// ボタンのイベントを登録
		MainActivity.this.findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Tools.callBrowser(MainActivity.this,"http://weather.yahoo.co.jp/weather/jp/27/6200.html");

			}

		});

	}


	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);

		Log.i("lightbox", String.format("requestCode : %d", requestCode)  );
		Log.i("lightbox", String.format("resultCode : %d", resultCode)  );

		if ( data != null ) {
			String returnData = data.getStringExtra("returnData");
			if (returnData != null) {
				Log.i("lightbox", String.format("returnData : %s", returnData));
			}
		}

	}
}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
Main2Activity ( No.2 )
日時: 2016/05/10 15:53
名前: lightbox
BUTTON3 では、setResult で数値以外に intent も戻しています。ですから、MainActivity で受け取れますが、他のボタンでは intent を返していないので、MainActivity の onActivityResult では intent が null になるので注意する必要があります。
package lightbox.may.toolstest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class Main2Activity extends AppCompatActivity {

	private int requestCode;
	private TextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main2);

		Intent intent = getIntent();
		String text = intent.getStringExtra("text");
		tv = (TextView) Main2Activity.this.findViewById(R.id.textView);
		tv.setText( text );

		requestCode = intent.getIntExtra("requestCode", 1);
		Log.i("lightbox", String.format("requestCode : %d", requestCode)  );

		// ボタンのイベントを登録
		Main2Activity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				setResult(100);

				// Main2Activity.this.finish();
				finish();

			}

		});

		// ボタンのイベントを登録
		Main2Activity.this.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				setResult(200);

				// Main2Activity.this.finish();
				finish();

			}

		});

		// ボタンのイベントを登録
		Main2Activity.this.findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Intent intent = new Intent();
				intent.putExtra("returnData", "文字列を返す");
				setResult(300, intent);

				// Main2Activity.this.finish();
				finish();

			}

		});

	}

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス