2015-10-17 124 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