3 Android 今日のエラー、グローバル変数設定エラー、This version of the rendering library is more recent than your version of ADT plug-in、バックグラウンドからの復帰でエラー、Cursor cursor=db.rawQuery(selectQuery, null)

3 Android 今日のエラー、グローバル変数設定エラー、This version of the rendering library is more recent than your version of ADT plug-in、バックグラウンドからの復帰でエラー、Cursor cursor=db.rawQuery(selectQuery, null);

前回のエラーIntentのfinish()でエラー、textViewの初期化忘れ、強制終了、レイアウトXMLの記載ミス

(1)Activityにまたがってグローバルに変数などのオブジェクトを共有でエラー

何度コードをチェックして見てもグローバル変数を設定したところでエラーとなります。コードの記載が間違っているのかとなやっていて、
再度、参考サイトを参考にすると、AndroidManifest.xmlの設定を忘れていました。


AndroidManifest.xmlの中のapplicationタグの中に
android:name=”Globals”

これでOK。
なお、アイフォンのXCODEにはxmlはありませんので、グローバル変数を使うときにアンドロイドのような設定はありません。
デリゲートするだけです。

(2)配列に値が代入されていないのに、値を取り出そうとしていた
>値を代入した後に、値を取り出すように変更(コードをリライト、メソッド(関数)化したときに、順序がばらばらになってしまったという現象でした)

(3)onCreateにsetContentVIew() が記載されていないミス
>正しく記載

(4)指定したレイアウトに指定したオブジェクトボタンがなかった、または誤記
>必要なオブジェクトボタンと正しいオブジェクトを設定した。

(5)任意の画面に戻るとエラーになる。それは仕様です。

トップ、リスト、問題、答え。の順で画面を切り換えて移動して、答え画面で、リストに飛ぶIntentするとエラーとなります。そこで、intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONTは途中の画面に戻っても
エラーになりませんが、ここで、finish()の戻りが、変わってしまいます。
つまり、途中で流れを変えてしまいましたので、いままでの流れを変えてしまうことになりました。
そして、この流れが変わった状況で、画面遷移をするとまた、エラーになりました。
アンドロイドの仕様では、順番に移動し元に戻ることが基準になるようです。

そこで、案としては、答えの画面をダイアログにする。
または、トップ表紙を辞めてリスト画面を最初にする。
が考えられました。
トップは単に表紙の役割でしかないので、トップを止めれば良いのです。
しかし、なんとなくソフトとして突然学習が始まるのは、急すぎる気がします。

一応、答えからトップに戻る場合は、エラーになるという問題ありません。途中のリスト画面に戻ってしまうので問題が発生してしまうのです。

 いろいろと調べてみると、トップからリスト画面に移動するときに、Intent発行時にActivityスタックをクリアすれば良いという記載がありました。
 

Intent intent = new Intent(getApplicationContext(), 移動先のクラス.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

【Android】Intent発行時にActivityスタックをクリアする方法を参照
これで、試してみます。
だめなときは、トップ画面を止めようかと。
それでも上手くいかないときは、答え画面をやめて、ダイアログにしようと思います。

 
(6)This version of the rendering library is more recent than your version of ADT plug-in
新しくSDKをバージョンアップしたら、レイアウトが表示されなかった。

Click Help > Install New Software.
In the Work with field, enter: https://dl-ssl.google.com/android/eclipse/
Select Developer Tools / Android Development Tools.
Click Next and complete the wizard.

でインストール

(7)多重起動を禁止
AndroidManifestのactivity内
android:launchMode=”singleTask”
を追加してみた

これでどうなるか
だめですね。多重起動してる。
改善せず。

(8)sherlock を導入して、警告が表示されるのは自作のプロジェクトのlibs/android-support-v4.jarをEclipseから削除すれば
よいそうです。

ActionBarSherlockをアプリで使おうとして導入時”Jar mismatch! Fix your dependencies”と出た時の対処

(8)バックグラウンドからの復帰でエラー
Qlist.javaにintentするとエラーになってしまう。
他のアクティビティを表示させていて、バックグラウンドになってもエラーにはならないのに。

そこで、public void onDestroy()、onStop() など を入れました。

@Override
public void onUserLeaveHint(){
//ホームボタンが押された時や、他のアプリが起動した時に呼ばれる
//戻るボタンが押された場合には呼ばれない
finish();//ここで、Qlist.javaを終了させる
}
として、Qlistのアクティビティが起動していたら、強制的に終了させるようにしてみました。
すると、とりあえず、Qlist.javaのアクティビティのときにバックグラウンドになっても強制終了することはなくなりました。
しかし、今度は、タスクリストで、Qlist.javaのアクティビティが表示されるときには、アプリの最初の画面からになってしまいました。
これは、 onUserLeaveHint()のfinish()をコメントにすれば、すべて丸く納まるのか?
この点については、後日やってみようと思います。
まずは、onUserLeaveHintで、強制終了はなくなりました。
しかし、他にも問題がありました。他の画面のアクティビティでも終了していて、戻るでQlist画面が表示されません。

そこで、onStop()にfinish()を入れました。
でもこれだと画面が切り替わるとQLISTを削除終了します。

うーんと悩んでいてfinish()を入れずに、再度確認したら、強制終了しなくなりました。
もしかすると他のところを直していてそこが原因だったか?

とりあえず、このまま進めてみます。

(9)SQLiteでエラーCursor cursor=db.rawQuery(selectQuery, null);
の次の処理でエラーです。
>原因
単に検索結果が該当なしなだけでした。
検索結果が0なのに、配列から格納された以上の値を取得しようとしていました。
検索結果が0のときはなにもしないようにしました。

関連記事

「スポンサーリンク」


ツイートツイート
カテゴリー: Androidアンドロイド携帯アプリ タグ: パーマリンク