2011-04-08 41 views
0
public class ServerResponce extends ListActivity { 
    private ArrayList<listobj> tobj = new ArrayList<listobj>(); 
    **static String str1;** 
    PickUpLocation pickup=new PickUpLocation(); 
    String pickuplocid= pickup.locationid; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    new MyTask().execute(); 

} 

    private class MyTask extends AsyncTask<Void, Void, Void> 
    { 
      private ProgressDialog progressDialog; 
      protected void onPreExecute() { 
        progressDialog = ProgressDialog.show(ServerResponce.this, 
            "", "Loading. Please wait...", true); 
      } 
      @Override 
      protected Void doInBackground(Void... arg0) { 
        try { 





       URL tURL= new URL("http://qrrency.com/mobile/j2me/cab/CabBooking.php?userid=1&from=home&to=office&datetime=&cabservicetype=1&cabtype=1&cabfeatures=AC&locationid="+pickuplocid+""); 

        BufferedReader inn = new BufferedReader(new InputStreamReader(tURL.openStream())); 
        int p=0; 

        StringBuffer buffer1=new StringBuffer(); 

        while ((p=inn.read())!=-1) 
        { 
          buffer1.append((char)p); 
          str1=str1+(char)p; 

        } Log.i("Line----saurabh trivedi-ddddd----", str1); 

        inn.close(); 

的转移值I使类的对象和str1值传送到其它类ServerResponce显示“空”时“STR1”到其他类

servresp=new ServerResponce(); 
String serv= servresp.str1; 
Log.i("tag",serv); 

serv是表示“空”为什么?

+0

str1和静态字符串 – Vivek 2011-04-08 12:48:51

回答

0

当你的字符串是静态的,那么你不需要创建该类的Objetc。 可以在第二活动中使用。

ServerResponse.str1; 

在你的第二个活动

+0

ServerResponse.str1;也给“空” – SRam 2011-04-08 13:10:12

0

ListActivity不说的意思被你实例化一个类,那就是应该由Android本身来处理一个框架的东西。

onCreate()是当一个活动是通过一个意图开始没得到,当你实例化类调用,这是Android的工作。所以MyTask不会被创建或执行。

而且,即使你在构造函数中执行MyTask,这将不能工作,因为:(!这将要执行一段时间)

ServerResponce servresp=new ServerResponce(); 
String serv= servresp.str1; 
Log.i("tag",serv); 

你刚刚起步的任务并立即查询结果字符串。你必须使用onPostExecute()回调来确保你有一个值。

(你不打算有点太快了?)