0

Web サービスからの値をある画面から別の画面に表示しようとしていますが、次の画面にそれらの値を印刷できません。

実際、私のエミュレータは実行されていますが、空の画面しか表示されていません

これが私の参照元です。それを見つけて解決策を教えてください。

Main_WB.java

public class Main_WB extends Activity 
{
EditText edt1,edt2;
  //    TextView txt_1;

Button btn;

 @Override
 public void onCreate(Bundle savedInstanceState) 
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    edt1 = (EditText)findViewById(R.id.editText1);
    edt2 = (EditText)findViewById(R.id.editText2);
    btn = (Button)findViewById(R.id.button1);

    btn.setOnClickListener(new View.OnClickListener()
    {
    public void onClick(View v) 
    {
        getTMSChart(edt1.getText().toString(),edt2.getText().toString());
        Intent myint = new Intent(Main_WB.this,ResultActivity.class);
        startActivity(myint);
    }     
    });
  }

 private void getTMSChart(String FromDate,String ToDate)
 {
 //txt_1 = (TextView)findViewById(R.id.textView1);

 System.setProperty("http.keepAlive", "false");        
 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);        

 envelope.dotNet = true;

 String NAMESPACE = "http://tempuri.org/";
 String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
 String METHOD = "GetTMSChart";

 SoapObject request = new SoapObject(NAMESPACE, METHOD);        
 request.addProperty("FromDate", FromDate);               
 request.addProperty("ToDate", ToDate);

 envelope.setOutputSoapObject(request);
 HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

 try 
 {
    androidHttpTransport.call(NAMESPACE + METHOD, envelope);
    SoapObject result = (SoapObject) envelope.bodyIn;
    SoapObject root =  (SoapObject) ((SoapObject)(result).getProperty(0)).getProperty("NewDataSet");
    int tablesCount = root.getPropertyCount();

    for (int i = 0; i < tablesCount; i++)
    {
       SoapObject table = (SoapObject) root.getProperty(i);
       int propertyCount = table.getPropertyCount();

       int[] ord = new int[propertyCount];
       int[] fre = new int[propertyCount];
       int[] margin = new int[propertyCount];

    for (int j = 0; j < propertyCount; j++)
    {   
        String x,y;

        int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));
        int freightRate = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
        int marginPercent = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));

    //  String orderNo =  table.getPropertyAsString("Order_No");

        ord[j] = orderNo;
        fre[j] = freightRate;
        margin[j]= marginPercent;

        x = ord.toString();
        y = fre.toString();

        Intent myIntent = new Intent(Main_WB.this, ResultActivity.class);
        myIntent.putExtra("gotonextpage", x);
        startActivity(myIntent);

        // whatever you do with these values
          }                   
       }
    }   
    catch (Exception e) 
    {
    }   
    }      }

結果アクティビティ.java

 public class ResultActivity extends Activity 
 {
String str;
TextView txtv;

 @Override
 public void onCreate(Bundle savedInstanceState)
 {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);

Bundle extras = getIntent().getExtras();
if(extras != null)
{   
 str = extras.getString("goto_next_page");
 }
else
{   
}

txtv = (TextView)findViewById(R.id.txtVw);
txtv.setText(str);
}}
4

3 に答える 3

0

私はAsyncTaskを使用します。

そして、onPostExecute私は活動を開始します。

そのネットワーキングはUIと混ざり合って私を混乱させます.Android 4でまったく動作しますか? - UIスレッドなどにネットワークがない場合、例外が発生するはずです。例外名を忘れました。とにかく、ネットワーク層と UI 層を分離してみてください。

また、asmx を呼び出して、どこかで se が必要でした - どこかを忘れました - true へのパラメーター: isDotNet または同様の prope 名。

于 2012-09-26T10:52:03.293 に答える
0

使用する

getIntent().getStringExtra("gotonextpage", "default");

それ以外の

getIntent().getExtras();

結果アクティビティで。データを取得するには、データを配置するために使用したのと同じキーを使用する必要があることに注意してください。

于 2012-09-26T10:52:15.760 に答える
0

まず、UI スレッドで Web サービスを呼び出しています。それは大したことではありません。

第二に、あなたの名前は一致しません。エクストラを「gotonextpage」として設定していますが、2 番目のアクティビティで「goto_next_page」として取得しようとしています。

于 2012-09-26T10:53:09.020 に答える