-2

私はそのようにすることができますか?

public void onClick(View v) {
        switch (v.getId()){
        case R.id.btn:
             edit11=edit1.getText().toString();
             edit22=edit2.getText().toString();
             Intent i=new Intent(this,selection.class);
             i.putExtra("code_value",edit11);
             Intent k=new Intent(this,myservice.class);
             k.putExtra("time_value",edit22);
                     this.startService(k);
             Intent l=new Intent(this,MainActivity.class);

             startActivity(l);  
             break;

     }
     }

上記のアクティビティから、2 つの編集テキスト フィールドとボタンが押されたときに「code_value」を選択アクティビティに渡し、time_value を myservice アクティビティに渡し、メイン アクティビティを開始します。

これを行うと、選択アクティビティ oncreate で nullpointer 例外が発生します。Intent i のみを使用し、その中に 2 つの値を渡してから startactivity(i) を渡すと、正常に動作することに言及する必要があります。

- - - - - - - - - - -アップデート - - - - - - - - - - - - - - --------------

選択クラス:

public class selection extends FragmentActivity implements OnMyLocationChangeListener{

    GoogleMap googleMap;
    double latitude=0.0;  
    double longitude=0.0;
    String code_value="";


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


        code_value=getIntent().getExtras().getString("code_value");
         ...//code for google map
      ...
      public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId == R.id.rb_normal){
                    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
         ....
          else if(checkedId == R.id.save_location){

                 new Thread(new Runnable() {
                     public void run() {

                           postData(Double.toString(latitude),Double.toString(longitude),code_value);
                     }

                 }).start();
        .....
         public void postData(String lat, String lo ,String code) {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
                HttpGet  htget = new HttpGet("www.test.com"+lat+"/"+lo+"/"+code);

    try {
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(htget);
        String resp = response.getStatusLine().toString();
        Toast.makeText(this, resp, 5000).show();


    } catch (ClientProtocolException e) {
        Toast.makeText(this, "Error", 5000).show();
    } catch (IOException e) {
        Toast.makeText(this, "Error", 5000).show();
    }

ログキャット:

W/dalvikvm(2459): threadid=1: thread exiting with uncaught exception (group=0x2aacc560)
03-28 10:34:35.478: E/AndroidRuntime(2459): Uncaught handler: thread main exiting due to uncaught exception
03-28 10:34:35.498: W/System.err(2459): java.io.IOException: Permission denied
03-28 10:34:35.508: E/AndroidRuntime(2459): FATAL EXCEPTION: main
03-28 10:34:35.508: E/AndroidRuntime(2459): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.datagps/com.example.datagps.selection}: java.lang.NullPointerException
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.os.Looper.loop(Looper.java:130)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at java.lang.reflect.Method.invokeNative(Native Method)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at java.lang.reflect.Method.invoke(Method.java:507)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at dalvik.system.NativeStart.main(Native Method)
03-28 10:34:35.508: E/AndroidRuntime(2459): Caused by: java.lang.NullPointerException
03-28 10:34:35.508: E/AndroidRuntime(2459):     at com.example.datagps.selection.<init>(selection.java:87)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at java.lang.Class.newInstanceImpl(Native Method)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at java.lang.Class.newInstance(Class.java:1409)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
03-28 10:34:35.508: E/AndroidRuntime(2459):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)

" " をマニフェストに出すのを忘れていました。その後、アプリケーションを起動すると、「IntentService で nullpointer 例外」が発生してクラッシュします。

4

2 に答える 2

1

HttpClientメイン UI スレッドで を開始することはできません。を実行する別の Thread/Runnable を作成する必要がありますhttpClient。あなたに加えてNullPointerException(あなたがそれを解決したら)、あなたはandroid.os.NetworkOnMainThreadException.

を に移動しhttpClientて、Runnable問題の一部を修正します。

を修正するにはNullPointerException、それが発生したファイルと行番号を示す LogCat を確認する必要があります。質問に行番号が表示されないため、その行番号にコード行を投稿する必要があります。

于 2013-03-28T00:14:47.360 に答える
0

OK、問題は、oncreate.Moved の前に code_value 文字列があったことと、その ojk です。

于 2013-03-28T10:41:16.703 に答える