Activity

画面Activityの遷移

Intent(画面切り替え)

ア、Androidアプリで別のアクティビティを起動させる方法(引数がなし)

①起動させたActivityからの戻り値が不要な場合

例えば、xxxxというクラス名で作成したActivityを起動する場合、以下のコードだけです。

1
2
Intent i = new Intent(getApplicationContext(),xxxx.class);
startActivity(i);

第一引数はgetApplicationContext()で取得したContext型オブジェクト、 第二引数には、起動させるActivityのクラス名をセットします。

②起動させたActivityからの戻り値が必要な場合  同じく、xxxxというクラス名で作成したActivityを、今度は戻り値を取得できるように起動する方法は以下のようになります。

1
2
Intent i = new Intent(getApplicationContext(),xxxx.class);
startActivityForResult(i,0);

先ほどの例との違いは、2行目のstartActivityForResult()を使用している、という点だけです。 第二引数は、リクエストコードと言います。 何の為に使用するかと言いますと、起動させたActivity側が、戻り値を受け取る場合に、 どの起動での戻り値かを識別させるコードです。 戻り値の受け取りは、以下のイベントで取得できます。

1
protected void onActivityResult(int requestCode, int resultCode, Intent data) {}

上記のonActivityResult()を、Activityを呼び出す側のクラスに実装しておきます。 そして、呼び出したActivityが終了した後、戻ってきたときに上記のイベントが発生します。 この第一引数のrequestCodeに、startActivityForResult()で渡したリクエストコードが入ってきますので、 それで処理を振り分けることができます。(意図しないリクエストコードだったら、処理を飛ばす、等) 呼び出された側のActivityの、戻り値の返し方も説明しておきます。 以下のようにします。

1
2
3
i = new Intent();
setResult(RESULT_OK, i);
finish();

setResult()の第一引数が戻り値となります。 例えば、処理が成功した事を伝えたいのであればRESULT_OK、処理がキャンセルされた事を伝えたいのであれば、RESULT_CANCELEDを指定します。 これは、Activityクラスに宣言されている定数です。 int型であれば問題ないので、色んなパターンの戻り値が必要であれば、自分で定義した戻り値でもいいでしょう。 第二引数のIntentには、他に渡したい情報があれば、一緒に乗せていくこともできます。 i.putExtra()を使って、キーと値を渡しておけば、呼び出し側から取り出す事ができます。

イ、Androidアプリで、Activityから別のActivityを起動させる場合に、情報や値を受け渡す方法は以下通り(引数があり)

IntentクラスのputExtra()メソッドを使用します。 ①同じアプリ内の、xxxxというActivityを起動させ、例として、検索ワードと、or検索かand検索かのフラグを渡す、という場合は以下のようになります。

1
2
3
4
i = new Intent(getApplicationContext(),xxxx.class);
i.putExtra("KEYWORD", keywordStr);
i.putExtra("AND", andRadio.isChecked());
startActivity(i);

putExtraの第一引数は、キー名です。第二引数が、渡したい値です。

②呼び出されたActivity側では、以下のようにして受け取ります。 IntentクラスのputExtra()メソッドを使用します。 ・同じアプリ内の、xxxxというActivityを起動させ、例として、検索ワードと、or検索かand検索かのフラグを渡す、という場合は以下のようになります。

1
2
3
4
i = new Intent(getApplicationContext(),xxxx.class);
i.putExtra("KEYWORD", keywordStr);
i.putExtra("AND", andRadio.isChecked());
startActivity(i);

putExtraの第一引数は、キー名です。第二引数が、渡したい値です。 ・呼び出されたActivity側では、以下のようにして受け取ります。

1
2
3
Intent i = getIntent();
String keyword = i.getStringExtra("KEYWORD");
boolean isAnd = i.getBooleanExtra("AND", true);

まず、getIntent()でIntent型インスタンスを取得します。 このgetIntent()は、自身の起動に使われたIntentを取得する、という意味合いです。 設定する側は、一律putExtra()で値を設定しましたが、受け取り側では、 格納されている値の型によりメソッドが分かれます String型:getStringExtra() もし対応するキーが存在しないときは、戻り値はnullになります。 boolean型:getBooleanExtra() もし対応するキーが存在しないときは、戻り値は第二引数で設定した値になります。 上記の例ではtrueですね。

  • 特別に、オブジェクトのようなものの受け渡す方法はシート「Pacelable_Serializeable」を参考します。

  • FrameLayout(画面の向きでLayout切り替え)

Main.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:id="@+id/FirstView"
     android:visibility="visible"
     andorid:background="#ffffff">
     <Button
 android:id="@+id/ButtonNext"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:text="showNext">
     </Button>
</LinearLayout>

 <LinearLayout
     android:id="@+id/SecondView"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:visibility="invisible"
     andorid:background="#000000">
     <Button
 android:id="@+id/ButtonBack"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:text="Back">
     </Button>
</LinearLayout>

push_left_in.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android">

<translate
    android:fromXDelta="-100%p"
    android:toXDelta="0"
    android:duration="1000"/>

push_left_out.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android">

<translate
    android:fromXDelta="0"
    android:toXDelta="-100%p"
    android:duration="1000"/> 

push_right_in.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android">

<translate
    android:fromXDelta="100%p"
    android:toXDelta="0"
    android:duration="1000"/>  

push_right_out.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android">

<translate
    android:fromXDelta="0"
    android:toXDelta="100%p"
    android:duration="1000"/>

ソース

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private final Button.OnClickListener nextClickListener=new Button.OnClickListener(){
    @Override
    public void onClick(View v){
//TODO
JumpToSecondView();
    }
};
    private final Button.OnClickListener backClickListener=newButton.OnClickListener(){
@Override
public void onClick(View v){
    //TODO 
    JumpToFirstView();
}
    };  

    /**
     * 効果2,変滑効果
     */
    private void JumpToFirstView(){
firstView.setVisibility(View.VISIBLE);
firstView.setClickable(true);
firstView.setAnimatiion(AnimationUtils.loadAnimation(this,R.anim.push_left_in));
secondView.setVisiblility(View.GONE);
secondView.setAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));
    }
    /**
     * 効果2,変滑効果
     */
    private void JumpToSecondView(){
secondView.setVisibility(View.VISIBLE);
secondView.setClickable(true);
secondView.setAnimatiion(AnimationUtils.loadAnimation(this,R.anim.push_right_in));
firstView.setVisiblility(View.GONE);
firstView.setAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
    }

画面

画面縦横の切り替えについて

画面縦横の切り替えるときに、どうしても、画面のステータス(データ)を保存しなければいけなくて 下記の手法で実現出来ると思いいます。

  • Activityを %{color:red}{{fn(再建,廃棄して再度新規すること)}}% したくない場合、onConfigurationChanged()メソッドを使う。

  • Activityを再建したい場合は、アクティビティがステータス(データ)の保存

|区別||配置ファイル|保存メソッド|復元メソッド|データ渡し| |Activity再建しない||AndroidManifest.xml|onConfigurationChanged()||なし| |/3^.Activity再建|Activity/FragmentActivity||onSaveInstanceState()|onRestoreInstanceState()/onCreate()|Bundle| |Activity||onRetainNonConfigurationInstance()|-getLastNonConfigurationInstance()-%{color:red}{{fn(注,Overrideメソッドではない)}}%|Object| |FragmentActivity||onRetainCustomNonConfigurationInstance()|getLastCustomNonConfigurationInstance() %{color:red}{{fn(注,Overrideメソッドではない)}}%|Object|


①以下画面縦横を切り替える時Activity再建したくないステップ: ➊AndroidManifest.xmlで、android:configChanges="orientation|screenSize"プロパティを設定する。 ➋Activityで、onConfigurationChanged()メソッドをオーバーライトする。

➊AndroidManifest.xmlで、android:configChanges="orientation"プロパティを設定する。 android:configChangesプロパティの値が複数で構成されている場合、区切りは「|」にする。

  • android:configChangesプロパティの値: |プロパティの値|日本語説明|中国語説明| |orientation|画面の向きを変更する|屏幕方向改变了| |screenSize|画面のサイズを変更する|屏幕大小改变了| |keyboard|キーボードを変更する(例:外部のキーボードを使用する)|键盘发生了改变----例如用户用了外部的键盘| |keyboardHidden|キーボードの可用性が変更された|键盘的可用性发生了改变| |screenLayout|画面表示が変更された(例:異なる表示が有効になります)|屏幕的显示发生了变化------不同的显示被激活| |smallestScreenSize|画面の物理的なサイズが変更されました(例:外部画面に接続されている)|屏幕的物理大小改变了,如:连接到一个外部的屏幕上| |touchscreen|タッチスクリーンが変更される(通常は発生しません)|触摸屏改变了------通常是不会发生的| |fontScale|プロポーショナルフォントの変更(例:異なるグローバルフォントを選択してください)|字体比例发生了变化----选择了不同的全局字体| |mcc|国際モバイル加入者識別の国コードが変更され(mccはモバイルユーザーの国コードです) SIMが検出され、MCCを更新する|国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号| |mnc|国際モバイル加入者識別コード番号は、モバイルネットワークによって変更される(MNCが2桁まで、モバイルネットワーク番号です。モバイル加入者が移動通信ネットワークを識別するために属し)SIMが検出され、MNCを更新する |国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网| |locale|アドレスの変更(新しい言語が表示される)|地址改变了-----用户选择了一个新的语言会显示出来| |navigation|ナビゲーションが変更されました(通常は発生しません)| 导航发生了变化-----通常也不会发生| |uiMode|ユーザ·モードの変更|用户的模式发生了变化|

注意: 1.背景色:薄い青となっているプロパティの値はよく使うもので、頻度は高い。 2.Android 3.2 (API level 13)以降に、 android:configChangesへの値を設定するときに、 "orientation"のほか、"screenSize"を追加しなければいけないようになっていました。 android:configChanges="orientation|screenSize"

詳細な原因は、参照:http://developer.android.com/guide/topics/resources/runtime-changes.html

使用例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.co.casio.caios.configuration.change"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="15" />
    <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
    android:name=".ConfigurationChangeTestActivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/app_name" >
    <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
    </application>
</manifest>

➋.Activityで、onConfigurationChanged()メソッドをオーバーライトする。 ・onConfigurationChanged()メソッドの中、  「super.onConfigurationChanged(newConfig);」というスーパークラスのメソッドを実装しなければいけないのです。  実装を漏れた場合は、下記のように、android.app.SuperNotCalledException異常が起きる。

・画面縦横のxmlファイルは一つではない場合、Activityへの設定も必要になります。 setContentView(R.layout.main); 使用例:

1
2
3
4
5
6
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.fragment_page_link);
    fragment.initialize();
}

②Activityを再建したい場合は、アクティビティのステータス(データ)を保存しなければいけないのです。

方法➊:onSaveInstanceState()とonRestoreInstanceState()/onCreate()メソッドを使う。 * onSaveInstanceState() :アクティビティのステータス(データ)を一時保存する時に呼び出すメソッドです。 * 使用例:

1
2
3
4
5
6
7
8
9
@Override
protected void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      outState.putBoolean(KEY_ROTATION, true);
      outState.putInt(KEY_POSITION, mViewPager.getCurrentItem());
      outState.putBoolean(KEY_RELATION_FLG, relativechange);
      outState.putInt(KEY_RELATION_NUM, relativepagenum);
      outState.putBoolean(KEY_ERASE_MODE, mErasemode);
}
  • onRestoreInstanceState()/onCreate():アクティビティのステータス(データ)を再び復元するときにを呼び出すメソッドです。

使用例①:

1
2
3
4
5
6
7
8
9
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    mRotationFlg = savedInstanceState.getBoolean(KEY_ROTATION, false);
    mSavePosition = savedInstanceState.getInt(KEY_POSITION, 0);
    relativechange = savedInstanceState.getBoolean(KEY_RELATION_FLG, false);
    relativepagenum = savedInstanceState.getInt(KEY_RELATION_NUM, -1);
    mErasemode = savedInstanceState.getBoolean(KEY_ERASE_MODE);
}

使用例②:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mRotationFlg = savedInstanceState.getBoolean(KEY_ROTATION, false);
    mSavePosition = savedInstanceState.getInt(KEY_POSITION, 0);
    relativechange = savedInstanceState.getBoolean(KEY_RELATION_FLG, false);
    relativepagenum = savedInstanceState.getInt(KEY_RELATION_NUM, -1);
    mErasemode = savedInstanceState.getBoolean(KEY_ERASE_MODE);
}

注意: 1.onSaveInstanceState()とonRestoreInstanceState()についてですが 復元メソッドは必ず「onRestoreInstanceState()」ではありません。 onCreate()でも復元動作を行えます。 2.onStart()メソッドの後で、onResume()メソッドの前に、onRestoreInstanceState()メソッドを呼び出す。 onCreate()で復元を行いましたら、onRestoreInstanceState()を実装する必要がなくなること。

方法➋:Activityから継承する場合:onRetainNonConfigurationInstance()メソッドを使う。 * onRetainNonConfigurationInstance():アクティビティのステータス(データ)を一時保存する時に呼び出すメソッドです。

上記のonSaveInstanceStateの機能と同じように見られます。 使用例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
@Override
public Object onRetainNonConfigurationInstance() {
     Preferences pre = new Preferences(this);
     List<Object> list = new ArrayList<Object>();
     if (TextUtils.isEmpty(pre.getStartPassword()) == false) {
    list.add(isValid);
     }else{
    list.add(true);
     }
     list.add(fragmentLeft.getTags());
     list.add(detailFragment.getPages());
     list.add(detailFragment.getPageTags());
     list.add(detailFragment.getMarks());
     list.add(detailFragment.getClips());
     return list;
}
  • -getLastNonConfigurationInstance-():アクティビティのステータス(データ)を再び復元するときにを呼び出すメソッドです。

使用例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
@Override
    public void onActivityCreated(Bundle savedInstanceState) {
//--------------------------------------------------------------
//固定ではなくて、復元するときに、実際の状況より変るかもしれない。
//--------------------------------------------------------------
super.onActivityCreated(savedInstanceState);
MarkPageAdapter.setWorkFinished(false);
hasObject=false;
@SuppressWarnings("deprecation")
Object object = getActivity().getLastNonConfigurationInstance();
if(object!=null){
    hasObject=true;
    List<Object> list = (List<Object>) object;
    pages=(SimplePageList)list.get(2);
    mapTags=(Map<Integer,List<PageTag>>)list.get(3);
    mapMarks=(Map<Integer,List<Mark>>)list.get(4);
    clipsMap=(Map<Integer,List<SimplePage>>)list.get(5);    
}
    }

方法➋:FragmentActivityから継承する場合:onRetainCustomNonConfigurationInstance()メソッドを使う。 * onRetainCustomNonConfigurationInstance() :アクティビティのステータス(データ)を一時保存する時に呼び出すメソッドです。

使用例:

1
2
3
4
5
6
@Override
public Object onRetainCustomNonConfigurationInstance() {
     List<Object> list = new ArrayList<Object>();
     list.add(pageFragment.backupPages());
     return list;
}
  • getLastCustomNonConfigurationInstance():アクティビティのステータス(データ)を再び復元するときにを呼び出すメソッドです。

使用例:

1
2
3
4
5
6
7
8
@Override
public void onActivityCreated(Bundle savedInstanceState) {
     //--------------------------------------------------------------
     //固定ではなくて、復元するときに、実際の状況より変るかもしれない。
     //--------------------------------------------------------------
     super.onActivityCreated(savedInstanceState);
     object = ((FragmentActivity) getActivity()).getLastCustomNonConfigurationInstance();
}

ActivityのlaunchMode

<後日整理:陸> http://developer.android.com/guide/topics/manifest/activity-element.html http://developer.android.com/guide/components/tasks-and-back-stack.html http://developer.android.com/guide/components/activities.html#Lifecycle

ActivityのlaunchModeは四つがあります、中国語で説明します。

standard

standard模式是默认的启动模式,不用为配置android:launchMode属性即可,当然也可以指定值为standard。用此activity时,不管有没有已存在的实例,都生成新的实例。

singleTop

singleTop在此模式下,跳转该activity时,系统会先在栈结构中寻找是否有一个实例正位于栈顶,如果有则不再生成新的,而是直接使用,否则,就会重新生成一个实例。

singleTask

singleTask在跳转Activity过程中如果系统发现在栈就结构中存在该实例,不再生成新的实例,而是调用已有的实例。例如:ActivityA的模式为singleTask ,ActivityB为standard。

singleInstance

【ActA调用ActB】

在ActB1中调用ActA会使用原来的ActivityA1实例。这时候栈内的情况:

如果多次按按钮跳转,会发现始终只有ActivityA1这一个ActivityA类的实例。 宣伝アプリの作成画面はsingleTaskモードを使用される(共有機能の対応)

•singleInstance这种启动模式比较特殊,因为它会启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。 例如:ActA的模式为standard ,ActB为singleInstance。

MAINとSUBのActivityの呼び込んで表示について

ActivityGroupは多数Activityを管理することができる。

Androidの中でただ1つのActivityのイベントのある現在の画面だけを許して、 1つの新しいActivityをロードしてActivityGroupの中でまで来る時、その他の現在の存在のActivityGroupの中のviewを削除すので、 それから現在ActivityGroupの中でまで需要のActivityをロードする。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//存在するActivityのビューを削除する
pageContainer.removeAllView();
Window pageView =null;
//get the child page's view
switch(id){
case 0:
    pageView=getPageView(0);
    break;
case 1:
    pageView=getPageView(1);
    break;
case 2:
    pageView=getPageView(2);
    break;
case 3:
    pageView=getPageView(3);
    break;
default:
    break;
}
//add child page's view to linearLayout's container
//新たなActivityをロードする
pageContainer.addView(pageView.getDecorView()),LayoutParams.FILL_PARENT,LayoutParams.MATCH_PARENT);

private Window getPageView(int pageID){
 if(intents==null){
    intents=new Intent[4];
    subPageView=new Window[4];
    intents[0]=new Intent(Main.this,Cash.class);
    intents[1]=new Intent(Main.this,Credit.class);
    intents[2]=new Intent(Main.this,Token.class);
    intents[3]=new Intent(Main.this,Loan.class);
    for(int i=0;i<4;i++){
      subPageView[i]=getLocalActivityManager().startActivity)("subPageView"+i,intents[i]);
    }
 }
 return subPageView[pageID];
}

参考ソース:InDrawer841(在高登録)

ソフトキーを閉じる

3つの閉める方法がある

①アプリ中全てのソフトキーを閉じるの場合、AndroidManifest.xmlにプローパティ「configChanges」と「windowSoftInputMode」を追加する

1
2
3
4
5
6
7
<activity
    android:name=".CustomerStampActivity"
    android:label="@string/app_name"
    android:theme="@style/style_theme_transparent" 
    android:windowSoftInputMode="adjustUnspecified|stateHidden"
    android:configChanges="orientation|keyboardHidden">
</activity>

②androidにソフトキーを隠れる

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public boolean onTouch(View v,MotionEvent event){
    if(value==true){
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }
return false;
}
````

③個別なEditTextのソフトキーを閉じる

```java
TextView textViewTitle=(TextView)view.findViewById(R.id.textViewInputDialogTitle);
textViewTitle.setText(title);
editTextContent=(EditText)view.findViewById(R.id.editTextInputDialogContent);
editTextContent.setInputType(InputType.TYPE_NULL);

APKの呼び出し、データ渡す

Androidアプリで、apkから別のapkを起動させる場合に、方法は下記通りです

ァ.APKの切り替え MainProgram.apk------->InDrawer841.apk

a.InDrawer841のパッケージ b.InDrawer841のmainActivity c.InDrawer841のmainActivityのactionName

イ.データを渡す(ContentProviderを使用する)

ContentProviderの使用方法は下記通りです ①Content URIを指定する Content URIについて content://jp.co.casio.caios.app.main.informationprovider/information/1

  • prefix:"content://"固定
  • パッケージ名+任意のprovider名:"jp.co.casio.caios.app.main.informationprovider"(マニフェストで要素として宣言)
  • データ種類:"information"
  • tabnoで定義されているID:"1"

データ構造例 tabno NAME 1    Cash 2   Cread

②新しいクラスInformationProviderを追加し、ContentProviderを継承する。

1
public class InformationProvider extends ContentProvider{

③メソッドquery(),insert(),update(),delete(),getType(),onCreate()をオーバーライドする

④AndroidManifest.xmlに"jp.co.casio.caios.app.main.informationprovider"を追加する。

1
2
3
4
5
6
<application 
   android:icon="@drawable/icon"
   android:label="@string/app_name">
   <provider
      android:name="InformationProvider"
      android:authorities="jp.co.casio.caios.app.main.informationprovider"/>

サンプル InformationProvider 詳細はシート「InformationProvider」を参考します。 データを取得する方法は下記のとおり

1
2
3
4
5
6
7
8
9
private void getDataFormRegister(){
   Uri uri=Uri.parse("content://jp.co.casio.caios.app.main.informationprovider/information");
   Cursor cursor=getContentResolver().query(url,null,null,null,"tabno");
//All data from the RegisterMain.apk
tableAll=new Table(cursor);
//TabCount
tabs=tableAll.getKeys();
tabSize=tabs.size();
}

①Uri uri = Uri.parse("content://jp.co.casio.caios.app.main.informationprovider/information"); 全部データを取得する ②Uri uri = Uri.parse("content://jp.co.casio.caios.app.main.informationprovider/information/1"); ID:1のデータを取得する

全プログラムを終了する機能を実現について

画面遷移時は下記の問題があります

this.finish()でActivityを終わる場合、呼び出す先のActivityは終わらない 遷移  閉じる   閉じる ActA ⇒ ActB ⇒ ActA ⇒ ActB ✖ 遷移  閉じる   閉じる ActA ⇒ ActB ⇒ ActA ⇒〇

ActA:

「Script Execution」を押すと、下記のActBに遷移する ActB:

「Script Execution」終わたら、提示ダイアログを呼び出す、Enterボタンを押すと、 下記のActA画面に遷移する ActA:

CLOSEボタン押下で、画面ActBに戻る ActB:

修正

1
2
3
Intent intent=new Intent(DBReloadName.this,DBReload.class);
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

このようにDBReloadを起動すれば、プロセス空間にある全てのActivityをクリアルするようになります。