--/--/--(--)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コメント(-) | トラックバック(-) | --:--:--

2010/08/21(土)


遷移先Activityへオブジェクトを渡すこともできます。
ただし、受け渡しするオブジェクトはシリアライズ化できる必要があります。
シリアライズについての注意 → Serializableインタフェースの警告

受け渡しするオブジェクトのクラス:DataBean.java
import java.io.Serializable;
 
public class DataBean implements Serializable{
 private static final long serialVersionUID = 42L;
 public int example1;
 public String example2;
}

遷移元Activity:MyClass.java
import android.app.Activity;
import android.content.Intent;
 
public class MyClass extentds Activity{
 
 public void myMethod(){
  int requestCode = 1;
  DataBean dataBean = new DataBean();
 
  // NextPageへ値を渡し、画面遷移する
  Intent it = new Intent(MyClass.this,NextPage.class);
  it.putExtra("Serialize",dataBean);
  it.setAction(Intent.ACTION_VIEW);
  this.startActivityForResult(it,requestCode);
 }
}

遷移先Activity:NextPage.java
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
 
public class NextPage extentds Activity{
 
 public void onCreate(Bundle savedInstanceState){
  // MyClassからの値を受け取る
  Intent it = this.getIntent();
  DataBean dataBean = (DataBean)it.getSerializableExtra("Serialize");
 }
}

スポンサーサイト
コメント(0) | トラックバック(0) | 13:20:11

2010/08/21(土)


別の画面へ遷移させた後、遷移元のActivityへ値を返すことができます。
遷移先画面の終了後、遷移元のonActivityResultメソッドが呼ばれるので、ここで値を受け取ります。

遷移先Activity:NextPage.java
import android.app.Activity;
import android.content.Intent;
 
public class NextPage extentds Activity{
 
 public void myMethod(){
  // MyClassへ値を渡し、終了する
  Intent it = new Intent();
  it.putExtra("numeric",1);
  it.putExtra("string","TEST");
  it.putExtra("boolean",true);
  this.setResult(Activity.RESULT_OK,it);
  this.finish();
 }
}

遷移元Activity:MyClass.java
import android.app.Activity;
import android.content.Intent;
 
public class MyClass extentds Activity{
 
 @Override
 protected void onActivityResult(int requestCode,int resCode,Intent it){
  switch(resCode){
   case Activity.RESULT_OK:
    int defaultInt = -1;
    boolean defaultBool = false;
 
    int num = it.getIntExtra("numeric",defaultInt);
    String str = it.getCharSequenceExtra("string").toString();
    boolean bool = it.getBooleanExtra("boolean",defaultBool);
    break;
 
   case Activity.RESULT_CANCELED:
    break;
  }
 }
}

コメント(0) | トラックバック(0) | 12:59:52

2010/08/21(土)


別の画面へ遷移させたい場合は、startActivityForResultメソッドを使用します。
遷移先のActivityへ値を渡すこともできます。
なお、遷移先のActivityをAndroidManifest.xmlへ登録する必要があります。

遷移元Activity:MyClass.java
import android.app.Activity;
import android.content.Intent;
 
public class MyClass extentds Activity{
 
 public void myMethod(){
  int requestCode = 1;
 
  // NextPageへ値を渡し、画面遷移する
  Intent it = new Intent(MyClass.this,NextPage.class);
  it.putExtra("numeric",1);
  it.putExtra("string","TEST");
  it.putExtra("boolean",true);
  it.setAction(Intent.ACTION_VIEW);
  this.startActivityForResult(it,requestCode);
 }
}

遷移先Activity:NextPage.java
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
 
public class NextPage extentds Activity{
 
 public void onCreate(Bundle savedInstanceState){
  int defaultInt = -1;
  boolean defaultBool = false;
 
  // MyClassからの値を受け取る
  Intent it = this.getIntent();
  int num = it.getIntExtra("numeric",defaultInt);
  String str = it.getCharSequenceExtra("string").toString();
  boolean bool = it.getBooleanExtra("boolean",defaultBool);
 
  // MyClassへ復帰値を渡し、終了する
  this.setResult(Activity.RESULT_OK,it);
  this.finish();
 }
}

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="org.myclass"
  android:versionCode="1"
  android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".MyClass"
    android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <activity android:name="NextPage"></activity>
 </application>
 <uses-sdk android:minSdkVersion="4" />
</manifest>

コメント(0) | トラックバック(0) | 12:40:19

2010/08/13(金)


ファイルの入出力は、FileInputStreamおよびFileOutputStreamクラスを使用します。アクセスするファイルは、/data/data/パッケージ名/files配下に格納されます。
FileReader,FileWriterを使いたい所ですが、ファイルへのパスを直接指定しなければならず、あまりお勧めしません。対応されるまで待ちましょう。

import java.io.*;
import android.app.Activity;
import android.content.Context;
 
public class MyClass extends Activity{
 
 public void myMethod(){
  String file = "file.txt";
 
  try{
   // ファイルへの出力
   // MODE_PRIVATE:このアプリのみアクセス可能
   // MODE_APPEND:追記モード
   // MODE_READABLE:他のアプリも読み込み可能
   // MODE_WRITEABLE:他のアプリも書き込み可能
   FileOutputStream fos = this.openFileOutput(file,Context.MODE_PRIVATE);
   fos.write("テスト\n".getBytes());
   fos.flush();
   fos.close();
 
   // ファイルからの入力
   FileInputStream fis = this.openFileInput(file);
   InputStreamReader isr = new InputStreamReader(fis);
   BufferedReader br = new BufferedReader(isr);
   String line = null;
   while((line = br.readLine()) != null){
    System.out.println(line);
   }
   fis.close();
 
  }catch(Exception e){
  }
 }
}

コマンドライン

>adb shell
>cd /data/data/パッケージ名/files
>ls
file.txt
 

コメント(0) | トラックバック(0) | 12:44:22

2010/08/12(木)


コマンドプロンプトからのエミュレータ操作は、adbクライアントを使用します。
アプリケーションのインストールや、SDカードの操作等ができます。
シェルを起動(adb shell)をすると、lsやpwdなどのunixコマンドが使用できます。
adb.exeは多分、eclipse/android-sdk/tools配下にあります。


>adb version
バージョンの表示
 
>adb help
ヘルプの表示
 
>adb logcat
Logクラスが出力するデバッグ文等の表示
 
>adb install [-r] MyApl.apk(ファイル名)
アプリケーションのインストール
r:上書きインストール
 
>adb uninstall [-k] org.myapl.MyApl(パッケージ名)
アプリケーションのアンインストール
k:データ保持したままアンインストール
 
>adb devices
デバイスの一覧表示
 
>adb push c:\temp\file /sdcard
SDカードにファイルをコピー
 
>adb pull /sdcard/file c:\temp
SDカードからファイルをコピー
 
>adb jdwp
プロセスIDの一覧表示
 
>adb shell
シェルの起動
 

コメント(0) | トラックバック(0) | 12:31:23

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。