填充微调使用字符串值由SOAP的Web服务返回 [英] Populating Spinner using string values returned by SOAP web service

查看:136
本文介绍了填充微调使用字符串值由SOAP的Web服务返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的是Android code返回,我存储在一个字符串我的字符串值array.I想用这个字符串数组来填充我的纱厂之一。

我的主要目的是,这取决于用户在第一次微调选择,我想用我的字符串数组来填充我的第二微调。


  

然而,当我尝试我还是得到了当我填充适配器一个NullPointerException异常


我的Andr​​oid code:

 公共类标记2扩展活动
{
  私有静态最后弦乐SOAP_ACTION =htt​​p://tempuri.org/getData;
  私有静态最后弦乐METHOD_NAME =的getData;
  私有静态最后弦乐NAMESPACE =htt​​p://tempuri.org/;
  私有静态最终字符串URL =htt​​p://10.0.2.2/getsubject/Service1.asmx;
  私人微调S;
  私人微调S2;
  私人微调S3;@覆盖
    保护无效的onCreate(捆绑savedInstanceState)
{
    super.onCreate(savedInstanceState);    的setContentView(R.layout.mainspinner);    S =(微调)findViewById(R.id.spinner1);
    S2 =(微调)findViewById(R.id.spinner2);
    的String [] = myList4()的调用;
    的for(int i = 0; I< myList4.length;我++)
    的System.out.println(myList4 [I]);    的String [] myList中=新的String [] {上半场,下半场};
    的String [] = myList2新的String [] {
                                           ABC,
                                   GHF
                                   IJK
                                   };    的String [] = myList3新的String [] {
                            约翰,
                            安
                            乔,                                   };   s.setAdapter(新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_item,myList中));
    s2.setAdapter(新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_item,myList2));
    最后ArrayAdapter<串GT;适配器3 =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_item,myList4);
    最后ArrayAdapter<串GT;适配器2 =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_item,myList3);
    s.setOnItemSelectedListener(新OnItemSelectedListener()
    {        @覆盖
        公共无效onItemSelected(适配器视图<>母公司,视图V,INT POS,长I​​D)
        {        如果(parent.getItemAtPosition(POS)的ToString()。equalsIgnoreCase(上半场))
        {
           s2.setSelection(POS)
           s3.setAdapter(适配器3);
        }
        其他
        {
            s2.setAdapter(适配器2);
            s2.setSelection(POS)
        }        }        @覆盖
        公共无效onNothingSelected(适配器视图<>为arg0){
        }});
}公众的String []()调用
{
    SoapPrimitive responsesData = NULL;    SoapObject要求=新SoapObject空间(namespace,METHOD_NAME);    SoapSerializationEnvelope信封=新SoapSerializationEnvelope(
    SoapEnvelope.VER11);
    envelope.dotNet = TRUE;
    envelope.setOutputSoapObject(请求);    HttpTransportSE androidHttpTransport =新HttpTransportSE(URL);    androidHttpTransport.debug = TRUE;    尝试{    androidHttpTransport.call(SOAP_ACTION,信封);    responsesData =(SoapPrimitive)envelope.getResponse();
    的System.out.println(---响应----+ responsesData);    }赶上(SocketException前){
    ex.printStackTrace();
    }赶上(例外五){
    e.printStackTrace();
    }    的System.out.println(----+ responsesData);    串serviceResponse = responsesData的ToString();
    的String []温度;
    字符串分隔符=#;
    TEMP = serviceResponse.split(分隔符);
    的System.out.println(---- ----长+ temp.length);    返回温度;
   }
  }

我的logcat的:

  15 11-17:51:09.668:DEBUG / dalvikvm(125):GC_EXPLICIT释放在164ms 1220对象/ 68272字节
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):显示java.lang.NullPointerException
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):在com.example.Mark2 $ 1.onItemSelected(Mark2.java:88)
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):在android.widget.AdapterView.fireOnSelected(AdapterView.java:864)
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):在android.widget.AdapterView.access $ 200(AdapterView.java:42)
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):在android.widget.AdapterView $ SelectionNotifier.run(AdapterView.java:830)
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):在android.os.Handler.handleCallback(Handler.java:587)
 11-17 16:20:29.649:ERROR / AndroidRuntime(620):在android.os.Handler.dispatchMessage(Handler.java:92)


  

编辑:行号:88是s3.setAdapter(适配器3);



解决方案

NullPointerException异常当对象之一为空,你要使用它发生。

从你的code,我发现你没有初始化微调

的S3

您刚才忘了补充:

  S3 =(微调)findViewById(R.id.spinner3);

I am working on a Android code that returns me String values that I store in a String array.I want to use this String array to populate one of my Spinners.

My main intention is that depending on what the user selects in 1st spinner , I want to populate my 2nd spinner using my String array.

However, when I try I am getting a NullPointerException even when I am populating the adapter

My Android code:

public class Mark2 extends Activity 
{
  private static final String SOAP_ACTION = "http://tempuri.org/getData";
  private static final String METHOD_NAME = "getData";
  private static final String NAMESPACE = "http://tempuri.org/";
  private static final String URL = "http://10.0.2.2/getsubject/Service1.asmx"; 


  private Spinner s;
  private Spinner s2;
  private Spinner s3;

@Override
    protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.mainspinner);

    s = (Spinner) findViewById(R.id.spinner1);
    s2 = (Spinner) findViewById(R.id.spinner2);


    String[] myList4=call();
    for(int i=0;i<myList4.length;i++)
    System.out.println(myList4[i]);

    String[] myList = new String[] {"First half","Second Half"};
    String[] myList2=new  String[] {
                                           "abc",
                                   "ghf", 
                                   "ijk",                             
                                   };

    String[] myList3=new String[]  {
                            "john",
                            "ann", 
                            "joe",

                                   };

   s.setAdapter(new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, myList));
    s2.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList2));


    final ArrayAdapter<String> adapter3 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList4);
    final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList3);


    s.setOnItemSelectedListener(new OnItemSelectedListener()
    {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,int pos, long id) 
        {

        if(parent.getItemAtPosition(pos).toString().equalsIgnoreCase("First half"))
        {
           s2.setSelection(pos);
           s3.setAdapter(adapter3);
        }
        else
        {
            s2.setAdapter(adapter2);
            s2.setSelection(pos);


        }

        }



        @Override
        public void onNothingSelected(AdapterView<?> arg0) {


        }});


}

public String[] call()
{
    SoapPrimitive responsesData = null; 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( 
    SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.debug = true; 

    try {

    androidHttpTransport.call(SOAP_ACTION, envelope);

    responsesData = (SoapPrimitive) envelope.getResponse(); 
    System.out.println(" --- response ---- " + responsesData); 

    } catch (SocketException ex) { 
    ex.printStackTrace(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

    System.out.println( " ----" + responsesData );

    String serviceResponse= responsesData .toString(); 


    String[] temp; 
    String delimiter = "#"; 
    temp= serviceResponse.split(delimiter);
    System.out.println( " ---- length ---- " + temp.length); 

    return temp; 


   }      


  }

My logcat:

 11-17 15:51:09.668: DEBUG/dalvikvm(125): GC_EXPLICIT freed 1220 objects / 68272 bytes in 164ms
 11-17 16:20:29.649: ERROR/AndroidRuntime(620): java.lang.NullPointerException
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at com.example.Mark2$1.onItemSelected(Mark2.java:88)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:864)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.widget.AdapterView.access$200(AdapterView.java:42)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at  android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:830)
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.os.Handler.handleCallback(Handler.java:587)  
 11-17 16:20:29.649: ERROR/AndroidRuntime(620):     at android.os.Handler.dispatchMessage(Handler.java:92)

Edit: Line no: 88 is s3.setAdapter(adapter3);

解决方案

NullPointerException occurs when one of the object is null and you are trying to use it.

From your code i found that you have not initialized s3 of Spinner.

You just forgot to add :

s3 = (Spinner) findViewById(R.id.spinner3);

这篇关于填充微调使用字符串值由SOAP的Web服务返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆