現在、私はAndroidでSOAPメソッドを使用して2つのWebサービスを消費しています.Webサービスを消費する方法は、ユーザーからの入力を取得してテキストビューに表示するだけです.うまく機能しています.しかし、私はその答えをタブに表示しようとしています. 2つのタブで構成されるタブホストの.Imは、最初のWebサービスからの回答をタブホストの最初のタブに表示し、2番目のWebサービスからの回答を同じタブホストの2番目のタブに表示しようとしています...
しかし、ここでの問題は、2 つのタブに同じ回答が表示されることです。この問題を解決するにはどうすればよいでしょうか。
注: 両方のWebサービスのユーザーからの入力を取得するために、同じ編集テキストとボタンを使用しています。
私には4つの活動があります。
- Demo_tabActivity.java [主なアクティビティ]
- タブホスト.java
以下の 2 つのアクティビティは、上記のタブです
- Tab_1.java
- Tab_2.java
最初のアクティビティ (Demo_tabActivity.java) には edittext とボタンが含まれています。2 番目 (Tabhost.java) のアクティビティには Tabhost ウィジェットが含まれています。
最初のアクティビティは、ユーザーからの入力を取得して Web サービスを消費し、タブホスト (2 番目のアクティビティ) の最初のタブ (3 番目のアクティビティ) にデータを返します。同様に、別の Web サービスを消費します。
以下の私のコードを見つけてください
Demo_tabActivity.java
public class Demo_tabActivity extends Activity
{
private static String NAMESPACE1 = "http://tempuri.org/";
private static String NAMESPACE2 = "http://tempuri.org/";
private static String METHOD_NAME1 = "FahrenheitToCelsius";
private static String METHOD_NAME2 = "CelsiusToFahrenheit";
private static String SOAP_ACTION1 = "http://tempuri.org/FahrenheitToCelsius";
private static String SOAP_ACTION2 = "http://tempuri.org/CelsiusToFahrenheit";
private static String URL1 = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
private static String URL2 = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
Button btnFar;
EditText txtFar;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnFar = (Button)findViewById(R.id.button1);
txtFar = (EditText)findViewById(R.id.editText_in);
btnFar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
String b;
String b2;
//Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE1, METHOD_NAME1);
SoapObject req = new SoapObject(NAMESPACE2, METHOD_NAME2);
//Use this to add parameters
request.addProperty("Fahrenheit",txtFar.getText().toString());
request.addProperty("Celsius",txtFar.getText().toString());
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
env.setOutputSoapObject(req);
envelope.dotNet = true;
try
{
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL1);
HttpTransportSE androidHttpT = new HttpTransportSE(URL2);
//this is the actual part that will call the webservice
androidHttpTransport.call(SOAP_ACTION1, envelope);
androidHttpT.call(SOAP_ACTION2, env);
// Get the SoapResult from the envelope body.
SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
SoapPrimitive res = (SoapPrimitive)envelope.getResponse();
if (result != null && res != null)
{
//Get the first property and change the label text
b = result.toString();
b2 = res.toString();
Intent myIntent = new Intent(v.getContext(), Tabhost.class);
myIntent.putExtra("gotonextpage", b);
myIntent.putExtra("goto", b2);
startActivity(myIntent);
}
else
{
Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
}
タブホスト.java
public class Tabhost extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
String result;
String result2;
Bundle extras = getIntent().getExtras();
Bundle extras2 = getIntent().getExtras();
if(extras!=null)
{
result = extras.getString("gotonextpage");
} else result = "Didnt work !" ;
if(extras2 !=null)
{
result2 = extras2.getString("goto");
} else result2 = "Didnt work !" ;
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, Tab_1.class);
intent.putExtra("result", result);
spec = tabHost.newTabSpec("first").setIndicator("First").setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Tab_2.class);
intent.putExtra("result2", result2);
spec = tabHost.newTabSpec("second").setIndicator("Second").setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
Tab_1.java
public class Tab_1 extends Activity
{
TextView tv1;
String result;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
result = extras.getString("result");
} else result = "didnt work";
tv1 = (TextView)findViewById(R.id.textView_main2);
tv1.setText(result);
}
}
Tab_2.java
public class Tab_2 extends Activity {
String result2;
TextView tv2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
Bundle extras2 = getIntent().getExtras();
if(extras2 != null) {
result2 = extras2.getString("result2");
} else result2 = "didnt work";
tv2 = (TextView)findViewById(R.id.textView_main3);
tv2.setText(result2);
}
}
ご協力いただきありがとうございます!..