android開発初心者です。お願いします

1,191 views
Skip to first unread message

mizuta...@gmail.com

unread,
Jun 24, 2015, 3:47:20 AM6/24/15
to android-g...@googlegroups.com
<<android開発初心者です。>>

androidstudioで緯度経度の値を取得し、取得した値からif-else文で場所を特定するプログラムを実装しています。

緯度経度の値を取得するプログラムはできたのですが、if-else文を用いて場所を特定するプログラムが実装できません。
(実機で「問題が発生したためMy Applicationを終了します」と表示されます。)

問題があるとしたらどこなのでしょうか?
よろしくお願いします



一部省略します。

<<MaomActivity.java>>

・・・・・・・・・・
・・・・・・
・・・


//位置情報に取得
public class MainActivity extends Activity
implements LocationListener{
private final static String BR = System.getProperty("line.separator");
private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
private TextView textView;
private LocationManager manager;

//アクティビティ起動時に呼び出される
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//レイアウトの生成
LinearLayout layout = new LinearLayout(this);
layout.setBackgroundColor(Color.WHITE);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

//テキストビューの生成

textView = new TextView(this);
textView.setText("LocationEx");
textView.setTextSize(24);
textView.setTextColor(Color.BLACK);
textView.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
layout.addView(textView);

//ロケーションマネージャの取得
manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}

//アクティビティ再開時に呼び出される
@Override
public void onResume() {
super.onResume();
//ロケーションマネージャのリスナー登録
manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

}
//アクティビティ一時停止時に呼び出される
@Override
public void onPause(){
super.onPause();

//ロケーションマネージャの設定
manager.removeUpdates(this);
}
//位置情報変更を通知する時に呼ばれる
public void onLocationChanged(Location location){
//緯度・経度の取得
textView.setText("LocationEx>" + BR + "緯度:" + location.getLatitude() + BR + "経度:" + location.getLongitude());
TextView tv2 = (TextView) findViewById(R.id.textView2);
if(location.getLatitude() > 34.267 && location.getLongitude() >135.1515 ) {
tv2.setText("A");
}else{
tv2.setText("B");
}


・・・・・・・・・・・・・・・
・・・・・・・・・・・
・・・・・・・・・
・・・・・



<<activity_main.xml>>
・・・・・・・
・・・・・・
・・・・・・

 <TextView
        android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_alignParentStart="true"
android:layout_marginTop="59dp" />
</RelativeLayout>

Hirokazu Fukami

unread,
Jun 24, 2015, 3:50:22 AM6/24/15
to android-g...@googlegroups.com
こんにちはfkmです。

アプリが終了してしまった時のLogcatは見ましたか?
※たぶん原因これだろうなーと推測はできていますが、初心者ということで基本に立ち返ってもらってます

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

mizuta...@gmail.com

unread,
Jun 24, 2015, 4:26:39 AM6/24/15
to android-g...@googlegroups.com
fkmさんご返信ありがとうございます。
Logcatは見てみました。

    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at com.example.myapplication.MainActivity.onLocationChanged(MainActivity.java:70)
            at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:281)
            at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:210)
            at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:226)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

となっていました。
原因はNullPointerExceptionだと推測されるのですが、解決法が分かりません・・・

2015年6月24日水曜日 16時50分22秒 UTC+9 fkm:
こんにちはfkmです。

アプリが終了してしまった時のLogcatは見ましたか?
※たぶん原因これだろうなーと推測はできていますが、初心者ということで基本に立ち返ってもらってます

このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。

Tajima Kazuo

unread,
Jun 24, 2015, 5:08:12 AM6/24/15
to android-g...@googlegroups.com
onchange()メソッドの中で、TextViewに対してsetTexet()を実行するとnullであるといわれています。

つまり、そこの段階でTextViewが作成されていない可能性があります。



2015年6月24日 17:26 <mizuta...@gmail.com>:
fkmさんご返信ありがとうございます。
Logcatは見てみました。

こんにちはfkmです。

アプリが終了してしまった時のLogcatは見ましたか?
※たぶん原因これだろうなーと推測はできていますが、初心者ということで基本に立ち返ってもらってます

このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。

mizuta...@gmail.com

unread,
Jul 2, 2015, 2:18:31 AM7/2/15
to android-g...@googlegroups.com
TextViewは作成しているはずなのですが。。。(知識がないため間違っているかもしれません…)
どなたか解決法を教えてくれませんか?


2015年6月24日水曜日 18時08分12秒 UTC+9 hprc:
onchange()メソッドの中で、TextViewに対してsetTexet()を実行するとnullであるといわれています。

つまり、そこの段階でTextViewが作成されていない可能性があります。



2015年6月24日 17:26 <mizuta...@gmail.com>:
fkmさんご返信ありがとうございます。
Logcatは見てみました。

こんにちはfkmです。

アプリが終了してしまった時のLogcatは見ましたか?
※たぶん原因これだろうなーと推測はできていますが、初心者ということで基本に立ち返ってもらってます

このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。

Hirokazu Fukami

unread,
Jul 2, 2015, 2:27:48 AM7/2/15
to android-g...@googlegroups.com
こんにちはfkmです。

ヒント出したものの、正解にたどり着いていませんでしたか。。。

onCreate()で、

LinearLayout layout = new LinearLayout(this);
layout.setBackgroundColor(Color.WHITE);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

と、レイアウトXMLではなく、コードで生成したViewをsetContentView()に指定していますね。
なので
TextView tv2 = (TextView) findViewById(R.id.textView2);
でTextViewを取得しようとしても、idがR.id.textView2であるViewは無いのでnullが返ってきます。

XMLで指定したレイアウトを使う場合は
setContentView(R.layout.activity_main)
で指定します。



fkmさんご返信ありがとうございます。
Logcatは見てみました。

こんにちはfkmです。

アプリが終了してしまった時のLogcatは見ましたか?
※たぶん原因これだろうなーと推測はできていますが、初心者ということで基本に立ち返ってもらってます

このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。

このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages