我是新的Android开发者。我没有参加任何课程,但我正在使用互联网学习。 请在你的机器人中复制粘贴相同,尝试并指导我为什么它不起作用?
它是在eclipse中开发的。外部依赖项是httpclient-4.0.jar和httpcore-4.0.1.jar 我开发了一个应用程序。 它从IIS服务器获取报告列表。这实际上是HTML Pages的链接。 (这是全球性的,您可以查看链接)
IT共有16个Html页面。 应用程序假设每10秒更改一次WebView中的Report(Html Page)。它改变报告一次。但后来它没有改变。
请检查并告诉我什么是错误。
<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 :(得分:0)
我必须承认我还没有尝试过您的代码,但是您已经有很多事情需要处理。首先,您不应该在您的活动GetIntenetData()
中调用onCreate()
[原文]方法。这会阻止你的UI线程,它不应该。
以下是初学者的一些有用资源:
AsyncTask
通常是在后台进行工作的好方法,例如加载网页内容)基本上,您应该在onCreate()
初始化您的活动和视图组件,然后您可以从AsyncTask
启动onResume()
以在后台加载您的内容。
最后,通过快速阅读您的代码,您似乎只调用了Runnable
一次,这可以解释为什么您只加载一页。