2015-10-17 59 views
0

我已經在這裏讀了一個多小時的相關問題,但還沒有找到解決方案來解決我的問題,所以我會問。無法確定微調值

我有一個微調。我想使用該微調器中的選定城市設置經度和緯度變量。我無法知道如何直接調用該信息,或者在單擊「使用此城市」按鈕時將其設置爲變量。這是我迄今爲止的代碼。

的strings.xml

<string-array name="locations"> 
    <item > Washington D.C. </item>  
    <item >New York, NY</item> 
    <item >Juneau, AL</item> 
    </string-array> 

MainActivity.java

package cl.telematica.locationexample; 

    import  cl.telematica.locationexample.interfaces.LocationListenerHandler; 
    import cl.telematica.locationexample.location.ActiveLocationManagerActivity; 


    import android.content.Intent; 
    import android.location.Location; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.View; 
import android.view.WindowManager; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class MainActivity extends ActiveLocationManagerActivity { 

    public static String citylatitudText; 
    public static String citylongitudText; 
    public static TextView latitudText; 
    public static TextView longitudText; 
    public static String locationSet; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     /*ArrayAdapter<String> adapter; 
     locationSet = getResources().getStringArray(R.array.locations); 
     adapter = new ArrayAdapter<String>(
       this, 
       android.R.layout.simple_list_item_1, 
       locationSet); 

     setListAdapter(adapter);*/ 
     Button b = (Button)findViewById(R.id.btnTestNoResults); 
    Button c = (Button)findViewById(R.id.btnGPSSearch); 
    Button d = (Button)findViewById(R.id.btnSetCity); 

    final Spinner spinner = (Spinner)findViewById(R.id.spinner1); 
    ArrayAdapter<CharSequence> location_adapter = ArrayAdapter.createFromResource(this, R.array.locations, android.R.layout.simple_spinner_item); 
    location_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(location_adapter); 

    //final String locationSet = spinner.getSelectedItem().toString(); 
    //final String locationSet = spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString(); 
    // spinner.setSelection(((ArrayAdapter<String>)spinner.getAdapter()).getPosition(locationSet)); 

    //final String locationSet = (String) spinner.getSelectedItem(); 
    b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       startActivity(new Intent(MainActivity.this, NoResults.class)); 
      }; 
     }); 
     c.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       //if() 
       // TODO Auto-generated method stub 
       startActivity(new Intent(MainActivity.this, NewSearch.class)); 
      }; 
     }); 

     d.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if(locationSet == "Washington D.C.") 
       { citylatitudText = "38.9047 N"; 
       citylongitudText = "77.0164 W"; 
       } 

       else if (locationSet == "New York, NY") 
       {citylatitudText = "40.7127° N"; 
       citylongitudText = "74.0059° W";    
       } 
       else 
       {citylatitudText = "58.3000° N"; 
       citylongitudText = "134.4167° W";   
       } 

       // TODO Auto-generated method stub 
       startActivity(new Intent(MainActivity.this, NewSearch.class)); 
      }; 
     }); 
     latitudText = (TextView) findViewById(R.id.textView4); 
     longitudText = (TextView) findViewById(R.id.textView5); 

     listener = new LocationListenerHandler() { 
      @Override 
      public void OnLocationReceived(Location loc) { 
       latitudText.setText("" + loc.getLatitude()); 
       longitudText.setText("" + loc.getLongitude()); 
      } 
     }; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

NewSearch.java

package cl.telematica.locationexample; 

import android.os.Bundle; 
import android.widget.TextView; 
import cl.telematica.locationexample.location.ActiveLocationManagerActivity; 

public class NewSearch extends ActiveLocationManagerActivity { 

    public TextView citylat; 
    public TextView citylong; 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_new_search); 
     citylat = (TextView) findViewById(R.id.textView4); 
     citylong = (TextView) findViewById(R.id.textView5); 
     citylat.setText(""+ MainActivity.citylatitudText); 
     //citylong.setText("" + MainActivity.citylongitudText); 
     citylong.setText("" + MainActivity.locationSet);//testing to see if the city name selected by spinner is being put in variable form 


    } 

} 

當我點擊 「使用這個城市」 按鈕,我得到了NewSearch頁面上的citylong變量爲「null」,城市爲「58.3000°N」(所以它會去「els e「聲明,無論我選擇哪個城市)。

我知道還有一些關於Spinner調用的帖子,你可以看到我已經嘗試了其中的一些,並將他們留在我的代碼中註釋掉,因爲他們沒有工作。

我很感激您可以給予的任何幫助。

+0

只是好奇,你在哪裏更新與來自字符串xml項目的微調? –

+0

我有我的activity_main.xml中以下 <微調 機器人:ID = 「@ + ID/spinner1」 的android:layout_width = 「WRAP_CONTENT」 機器人:layout_height = 「WRAP_CONTENT」 機器人:layout_below =「@ + ID/select_location」 機器人:layout_centerHorizo​​ntal = 「真」 機器人:項= 「@陣列/位置」/> 而此行中我MainActivity.java 最終微調微調=(微調)findViewById(R.id.spinner1) ; 這是你的意思嗎? – Inessaria

+0

對此評論的格式不滿意。 – Inessaria

回答

0

我終於得到它的工作。這是我的代碼,因爲它是現在(工作!耶!)

MainActivity。java

import android.content.Intent; 
import android.location.Location; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.WindowManager; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends ActiveLocationManagerActivity { 

    public static String citylatitudText; 
    public static String citylongitudText; 
    public static TextView latitudText; 
    public static TextView longitudText; 
    public static String locationSet; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     Button b = (Button)findViewById(R.id.btnTestNoResults); 
     Button c = (Button)findViewById(R.id.btnGPSSearch); 
     Button d = (Button)findViewById(R.id.btnSetCity); 

     final Spinner spinner = (Spinner)findViewById(R.id.spinner1); 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 

     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) {   
       startActivity(new Intent(MainActivity.this, NoResults.class)); 
      }; 
     }); 
     c.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) {   
       startActivity(new Intent(MainActivity.this, NewSearch.class)); 
      }; 
     }); 

     d.setOnClickListener(new OnClickListener() { 


      @Override 
      public void onClick(View v) { 

       String locationSet = String.valueOf(spinner.getSelectedItem()); 
       if(locationSet.equals("Washington D.C.")) 
       { citylatitudText = "38.9047 N"; 
       citylongitudText = "77.0164 W"; 
       } 
       else if (locationSet.equals("Mansfield, PA")) 
       {citylatitudText = "41.8061 N"; 
       citylongitudText = "77.0756 W";   
       } 
       else if (locationSet.equals("New York, NY")) 
       {citylatitudText = "40.7127° N"; 
       citylongitudText = "74.0059° W";    
       } 
       else if (locationSet.equals("Juneau, AL")) 
       {citylatitudText = "58.3000° N"; 
       citylongitudText = "134.4167° W";   
       } 
       else if (locationSet.equals("Phoenix, AZ")) 
       {citylatitudText = "33.4500° N"; 
       citylongitudText = "112.0667° W";   
       } 
       else if (locationSet.equals("Tucson, AZ")) 
       {citylatitudText = "32.2217° N"; 
       citylongitudText = "110.9264° W";   
       } 
       else if (locationSet.equals("Sacramento, CA")) 
       {citylatitudText = "38.5556° N"; 
       citylongitudText = "121.4689° W";   
       } 
       else if (locationSet.equals("San Diego, CA")) 
       {citylatitudText = "32.7150° N"; 
       citylongitudText = "117.1625° W";   
       } 
       else if (locationSet.equals("Los Angeles, CA")) 
       {citylatitudText = "34.0500° N"; 
       citylongitudText = "118.2500° W";   
       } 
       else if (locationSet.equals("Denver, CO")) 
       {citylatitudText = "39.7392° N"; 
       citylongitudText = "104.9903° W";   
       } 
       else if (locationSet.equals("Jacksonville, FL")) 
       {citylatitudText = "30.3369° N"; 
       citylongitudText = "81.6614° W";    
       } 
       else if (locationSet.equals("Orlando, FL")) 
       {citylatitudText = "28.4158° N"; 
       citylongitudText = "81.2989° W";    
       } 
       else if (locationSet.equals("Atlanta, GA")) 
       {citylatitudText = "33.7550° N"; 
       citylongitudText = "84.3900° W";    
       } 
       else if (locationSet.equals("Boise, ID")) 
       {citylatitudText = "43.6167° N"; 
       citylongitudText = "116.2000° W";   
       } 
       else if (locationSet.equals("Chicago, IL")) 
       {citylatitudText = "41.8369° N"; 
       citylongitudText = "87.6847° W";    
       } 
       else if (locationSet.equals("Indianapolis, IN")) 
       {citylatitudText = "39.7910° N"; 
       citylongitudText = "86.1480° W";    
       } 
       else if (locationSet.equals("Des Moines, IA")) 
       {citylatitudText = "41.5908° N"; 
       citylongitudText = "93.6208° W";    
       } 
       else if (locationSet.equals("Kansas City, KS")) 
       {citylatitudText = "39.1067° N"; 
       citylongitudText = "94.6764° W";    
       } 
       else if (locationSet.equals("Louisville, KY")) 
       {citylatitudText = "38.2500° N"; 
       citylongitudText = "85.7667° W";    
       } 
       else if (locationSet.equals("New Orleans, LA")) 
       {citylatitudText = "29.9500° N"; 
       citylongitudText = "90.0667° W";    
       } 
       else if (locationSet.equals("Portland, ME")) 
       {citylatitudText = "43.6667° N"; 
       citylongitudText = "70.2667° W";    
       } 
       else if (locationSet.equals("Baltimore, MD")) 
       {citylatitudText = "39.2833° N"; 
       citylongitudText = "76.6167° W";    
       } 
       else if (locationSet.equals("Boston, MA")) 
       {citylatitudText = "42.3601° N"; 
       citylongitudText = "71.0589° W";    
       } 
       else if (locationSet.equals("Detroit, MI")) 
       {citylatitudText = "42.3314° N"; 
       citylongitudText = "83.0458° W";    
       } 
       else if (locationSet.equals("Minneapolis, MN")) 
       {citylatitudText = "44.9778° N"; 
       citylongitudText = "93.2650° W";    
       } 
       else if (locationSet.equals("Seattle, WA")) 
       {citylatitudText = "47.6097° N"; 
       citylongitudText = "122.3331° W";   
       } 
       else 
       {citylatitudText = "39.9500° N"; 
       citylongitudText = "75.1667° W";    
       }    
       // TODO Auto-generated method stub 
       startActivity(new Intent(MainActivity.this, NewSearch.class)); 
      }; 
     }); 
     latitudText = (TextView) findViewById(R.id.textView4); 
     longitudText = (TextView) findViewById(R.id.textView5); 

     listener = new LocationListenerHandler() { 
      @Override 
      public void OnLocationReceived(Location loc) { 
       latitudText.setText("" + loc.getLatitude()); 
       longitudText.setText("" + loc.getLongitude()); 
      } 
     }; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
0

比較字符串時,你可以嘗試使用equals方法嗎?

if(locationSet.equals("Washington D.C.")) 

並嘗試從按鈕被點擊後從微調獲取字符串值。包括

final String locationSet = (String) spinner.getSelectedItem(); 

 d.setOnClickListener(new OnClickListener() { 

方法內

。我遇到過類似的問題,這些黑客幫助我解決了這個問題。如果您在模擬器上運行,則可能會遇到一些滯後/進程問題,因此請將其安裝在移動設備中進行試用。

讓我知道這是否有幫助。

更新1:

這可能是完全錯誤的,但這是我如何實現我的微調。

  1. 首先使用陣列適配器來更新和設置微調器中的項目並告訴代碼它們是什麼。所以,做在你的代碼

    ArrayAdapter<CharSequence> location_adapter = ArrayAdapter.createFromResource(this, R.array.locations, android.R.layout.simple_spinner_item); 
    lang_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(location_adapter); 
    

我發現這個在你的代碼失蹤。我想這應該工作。

+0

仍然在NewSearch頁面上爲citylong變量獲取「null」:( – Inessaria

+0

讓我知道編輯是否有幸運 –

+0

您是否使用該代碼來初始化我的微調?我已將MainActivity.java代碼更新爲反映我認爲你的意思,你能確認它是正確的嗎? – Inessaria