2015-11-16 26 views
-1

我是新的Android開發人員。我沒有參加任何班級,但我正在使用互聯網自己學習。 請複製粘貼在你的android相同,試試看,並指導我爲什麼它不工作?主題停止回覆

它是在eclipse中開發的。外部依賴關係是httpclient-4.0.jar和httpcore-4.0.1.jar 我開發了一個應用程序。 它從IIS服務器獲取報告列表。這實際上是HTML頁面的鏈接。 (這是全球性的,你可以查看鏈接)

它總共有16個HTML頁面。 應用程序設想每10秒在WebView中更改報告(Html頁)。它改變報告一次。但後來它不會改變。

請檢查並告訴我什麼是錯誤。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 

tools:context="com.CorpoServe.bvgindialtd.ReportViewer" > 

<Button 
    android:id="@+id/btnPrev" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="30dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:text="@string/prev" /> 

<Button 
    android:id="@+id/btnNext" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="30dp" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:text="@string/next" /> 

<WebView 
    android:id="@+id/Brz" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignLeft="@+id/btnPrev" 
    android:layout_below="@+id/btnPrev" /> 

<ToggleButton 
    android:id="@+id/tbX" 
    android:layout_width="wrap_content" 
    android:layout_height="30dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:checked="true" 
    android:text="@string/play" 
    android:textOff="Pause" 
    android:textOn="Play" /> 
</RelativeLayout> 

這是我

 package com.CorpoServe.bvgindialtd; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Pattern; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URI; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.StrictMode; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.webkit.WebView; 
import android.widget.Button; 
import android.widget.Toast; 
import android.widget.ToggleButton; 

public class ReportViewer extends ActionBarActivity { 

List<String> ls= new ArrayList<String>(); 
int counter=0; 
Handler hnd; 
ToggleButton tb; 
WebView bz; 
public String GetIntenetData(String URL) throws Exception{ 
    BufferedReader in=null; 
    String data=null; 
    //URL="http://corposerve.com/ActionPage.asp?action=auth&uid=abc&pwd=abc"; 
    try{ 
     HttpClient cl= new DefaultHttpClient(); 
     URI ws= new URI(URL); 
     HttpGet rq=new HttpGet(); 
     rq.setURI(ws); 
     HttpResponse rs = cl.execute(rq); 
     in= new BufferedReader(new InputStreamReader(rs.getEntity().getContent())); 
     StringBuffer sb=new StringBuffer(""); 
     String l =""; 
     String nl= System.getProperty("line.separator"); 
     while((l=in.readLine())!=null){ 

     sb.append(l+nl); 

     } 
     in.close(); 
     data=sb.toString(); 
     return data; 
    } finally { 
     if(in!=null){ 
      try{ 
       in.close(); 
       return data; 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_report_viewer); 

    if (android.os.Build.VERSION.SDK_INT > 9) { 
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
     } 

    try { 
     String Url="http://203.90.76.206/newmis/GetReportList.aspx"; 
     String ss[]=GetIntenetData(Url).split(System.getProperty("line.separator")); 
     ls.clear(); 
     for(String s:ss){ 
      String[] x =s.split(Pattern.quote("*")); 
      ls.add("http://203.90.76.206/newmis" + x[0]); 

     } 
     bz= (WebView) findViewById(R.id.Brz); 
     bz.getSettings().setBuiltInZoomControls(true); 
     bz.getSettings().setSupportZoom(true); 
     bz.getSettings().setUseWideViewPort(true); 
     bz.getSettings().setLoadWithOverviewMode(true); 
     bz.loadUrl(ls.get(0)); 
     tb=(ToggleButton)findViewById(R.id.tbX); 
     counter=0; 

     hnd=new Handler(); 
     Runnable rnbl=new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 

        try { 
         Thread.sleep(10000); 
        } catch (Exception e) { 
         // TODO: handle exception 
        } 
        hnd.post(new Runnable(){ 

         @Override 
         public void run() { 
          // TODO Auto-generated method stub 
          if (tb.isChecked()){ 
          counter++; 
          if (counter>=ls.size()-1){ 
           counter=0; 
          } 

          bz.loadUrl(ls.get(counter)); 
         } 
         } 
        }); 

      } 
     }; 

     new Thread(rnbl).start(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     //e.printStackTrace(); 
     Toast t= new Toast(getApplicationContext()); 
     t.setText("1:" + e.getMessage()); 
     t.show(); 
    } 

    final Button nxt= (Button)findViewById(R.id.btnNext); 
    final Button prv=(Button)findViewById(R.id.btnPrev); 
    nxt.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter++; 
      if(counter>=ls.size()){counter=0;} 
      bz.loadUrl(ls.get(counter)); 

     } 
    }); 
    prv.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter--; 
      if (counter<0){counter=ls.size()-1;} 
      bz.loadUrl(ls.get(counter)); 
     } 
    }); 
    tb.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if(tb.isChecked()){nxt.setEnabled(false);prv.setEnabled(false);}else{nxt.setEnabled(true);prv.setEnabled(true);} 

     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.report_viewer, menu); 
    //MenuItem itm=menu.findItem(R.menu.report_viewer); 
    //itm.setVisible(false); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 

回答

0

我不得不承認我沒試過你的代碼,但目前已經有一堆東西,你應該照顧。首先,您不應該在您的活動onCreate()中致電您的GetIntenetData() [原文]方法。這會阻止你的UI線程,它不應該。

下面是一些有用的資源,對於初學者:

基本上你應該初始化您的活動,並在onCreate()視圖組件,就可以啓動一個AsyncTask from onResume()在後臺加載您的內容。

最後,從快速閱讀您的代碼看來,您只調用一次Runnable,這可以解釋爲什麼只加載一個頁面。

+0

爲了避免阻塞UI線程我已經通過添加StrictMode.ThreadPolicy的事情照顧。所以它已經被照顧了。我如何同意我沒有照顧onResume。它工作感謝。 –