0

在我的应用程序中,我想在单击按钮(位于第一个屏幕中)时调用 Web 服务。在第一个屏幕中,我将输入一个输入。基于该输入值,Web 服务必须发挥作用。单击按钮后,我调用了一个新意图并调用了 Web 服务,但是我如何将值从 1 个屏幕传递到其他屏幕。

我的代码:

这是按钮点击(第一个屏幕)

public void onClick(View v)
            {
                 // TODO Auto-generated method stub     
//              EditText medit;
//              EditText medit=(EditText)findViewById(R.id.editText1);
                 Intent myIntent = new Intent(v.getContext(), dispaly.class);
                 startActivity(myIntent);


}

这是网络服务(点击按钮后)

medit=(EditText)findViewById(R.id.editText1);
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);  
             SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

                String weight = medit.getText().toString();
                String fromUnit = "Grams";
                String toUnit = "Kilograms";

                PropertyInfo weightProp =new PropertyInfo();
                weightProp.setName("Weight");
                weightProp.setValue(weight);
//              weightProp.setValue(medit.toString());
                weightProp.setType(double.class);
                request.addProperty(weightProp);

                PropertyInfo fromProp =new PropertyInfo();
                fromProp.setName("FromUnit");
                fromProp.setValue(fromUnit);
                fromProp.setType(String.class);
                request.addProperty(fromProp);

                PropertyInfo toProp =new PropertyInfo();
                toProp.setName("ToUnit");
                toProp.setValue(toUnit);
                toProp.setType(String.class);
                request.addProperty(toProp);

                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet = true;
                envelope.setOutputSoapObject(request);
                HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);  
                try
                {
                    androidHttpTransport.call(SOAP_ACTION, envelope);
                    SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
                    Log.i("myApp", response.toString());  
                    TextView tv = new TextView(this);
                    tv.setText(weight+" "+fromUnit+" equal "+response.toString()+ " "+toUnit);
                    setContentView(tv); 

                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }.
4

2 回答 2

0

您需要putExtra在调用意图中使用并在另一个屏幕中获取该意图。

例如,您可以这样调用。

 Intent myIntent = new Intent(this, PlayVideoActivity.class);
    myIntent.putExtra("KeyName", value);
    startActivity(myIntent);

现在,当另一个活动来时,得到这样的价值。

 String value=getIntent().getStringExtra("Keyname");

这是使用示例,您可以使用 putExtra 支持的类型作为意图。

于 2012-05-02T07:39:49.080 回答
0

有两种方法可以做到这一点。您可以使用 putExtra 或共享首选项。
SharedPreferences:
从共享首选项编辑数据
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor 编辑器 = preferences.edit();
editor.putString("名称","测试");
editor.commit();

从共享首选项中检索数据

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);    
  String name = preferences.getString("Name","");    
  if(!name.equalsIgnoreCase(""))  
  {   
      name = name+"  Sethi";  /* Edit the value here*/  
  }

或者

**putExtra:**

**pass data using putExtra at the time of calling intent.**

Intent myIntent = new Intent(this, PlayVideoActivity.class);
myIntent.putExtra("KeyName", value);
startActivity(myIntent);

**Retrive data  from other activity**

String value=getIntent().getStringExtra("Keyname");
于 2014-07-01T10:16:52.257 回答