2011-06-27 3 views
0

以下は私のコードです。私はNullPointerExceptionを得ていますが、その名前を文字列にキャッチして読み込んでいます。これを解決する方法を教えてください。編集テキストから文字列への場所名の取得中にジオコーダークラスからのNullPointerException

Exceptiion:

DalvikVM[localhost:8620]  
    Thread [<1> main] (Running) 
    Thread [<8> Binder Thread #2] (Running) 
    Thread [<7> Binder Thread #1] (Running) 
    Daemon Thread [<10> [email protected]@405141c8] (Running) 
    Thread [<9> Thread-13] (Suspended (exception NullPointerException)) 
     TravellogActivity$2$1.run() line: 165 

コード:

public boolean onOptionsItemSelected(MenuItem m) 
    { 

     switch(m.getItemId()) 
     { 
     case R.id.setroute: 
      LayoutInflater li= LayoutInflater.from(this); 
      View textEntryView = li.inflate(R.layout.alertbox, null); 

      final AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setTitle("Enter the places"); 
      dialog.setView(textEntryView); 

      splc = (EditText) findViewById(R.id.strtplace); 
      dialog.setPositiveButton("Ok", new OnClickListener(){ 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
        pd = ProgressDialog.show(TravellogActivity.this, "Working..", "Searching your address", true, false); 
        //Show a progress dialog 


        searchAdress = new Thread(){ 
        public void run(){ 
          String addressInput = splc.getText().toString(); // <-- here Iam getting exception null pointer) 
          try { 
           foundAdresses = gc.getFromLocationName(addressInput, 5); // Search addresses 
           Thread.sleep(1500); 
          } catch (Exception e) { 
           // @todo: Show error message 
          } 
          showAdressResults.sendEmptyMessage(0);     
         } 
        }; 
        searchAdress.start(); 

       } 
      }); 
      dialog.show(); 
     } 
     return true; 
     }  

private Handler showAdressResults = new Handler() { 
       @Override 
       public void handleMessage(Message msg) { 
        pd.dismiss(); 

        if (foundAdresses.size() == 0) { // if no address found, 
         // display an error 
         Dialog locationError = new AlertDialog.Builder(
           TravellogActivity.this).setIcon(0).setTitle(
           "Error").setPositiveButton(R.string.ok, null) 
           .setMessage(
             "Sorry, your address doesn't exist.") 
           .create(); 
         locationError.show(); 

        } else { // else display address on map 
         for (int i = 0; i < foundAdresses.size(); ++i) { 
          // Save results as Longitude and Latitude 
          // @todo: if more than one result, then show a 
          // select-list 
          Address x = foundAdresses.get(i); 
          latit = x.getLatitude(); 
          longi = x.getLongitude(); 
         } 
         navigateToLocation((lat * 1000000), (lon * 1000000),myMapView); // display the found address 
        }; 

     return ; 

    } 

       private void navigateToLocation(double latitude, double longitude, 
         MapView myMapView) { 
        // TODO Auto-generated method stub 
        GeoPoint p = new GeoPoint((int) latitude, (int) longitude); // new 
        MC.animateTo(p); 
        myMapView.displayZoomControls(true); // display Zoom (seems that it doesn't 
        // work yet) 
        MapController mc = myMapView.getController(); 
        mc.animateTo(p); // move map to the given point 
        int zoomlevel = myMapView.getMaxZoomLevel(); // detect maximum zoom level 
        mc.setZoom(zoomlevel - 1); // zoom 
        myMapView.setSatellite(false); // display only "normal" mapview 
     } 
+4

標準コメント(ちょっと):*あなたが貼り付けたコードのどの行が例外*を作成しますか?ソースにコメントを追加してください( '// < - NPE here') –

答えて

2

多分この行でエラー:

splc = (EditText) findViewById(R.id.strtplace); 

はと交換してください

splc = (EditText) textEntryView.findViewById(R.id.strtplace); 

あなたはそのビューを膨らませているので、EditTextビューはその中にある必要があります。textEntryView

関連する問題