我必须为我的学校项目创建一个应用。它基本上应该做的是:从服务器的 .txt 中获取数据 -> 在切换按钮打开时在应用程序中显示数据。 它还应该有滚动,自动刷新和刷新到底部时自动刷新的选项。 一切正常,直到我添加了最后一个功能,它仍然可以在模拟器上运行,但不能在任何实际设备上运行(您仍然可以打开应用程序并切换按钮,它只是不加载数据)。我对此很陌生,不知道回滚粗略版本。任何帮助表示赞赏。 :)
package com.example.urlread;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.text.Html;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;
import androidx.appcompat.app.AppCompatActivity;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class MainActivity extends AppCompatActivity {
int count = 0;
TextView texx; //klopt dit?
private volatile boolean stopcount = true;
public void stopcounter(){
stopcount = true;
}
public void startcounter(){
stopcount = false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
texx = (TextView) findViewById(R.id.tex1);
texx.setMovementMethod(new ScrollingMovementMethod());
Thread t= new Thread(){
@Override
public void run (){
while (!isInterrupted()){
try {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
if (stopcount) {
return;
}
if (!stopcount) {
count++;
new doit().execute();
Log.d("counter", String.valueOf(count));
}
}
});
} catch (InterruptedException e){
e.printStackTrace();
}
}
}
};
t.start();
ToggleButton Tbut = (ToggleButton) findViewById(R.id.toggleButton);
Tbut.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
new doit().execute();
startcounter();
} else {
texx.setText("");
stopcounter();
}
}
});
}
public class doit extends AsyncTask<Void, Void, Void> {
String words;
@Override
protected Void doInBackground(Void... voids) {
try {
Document doc = Jsoup.connect("https://innovatielab2.tk:4432/xmega.txt").get();
// words=doc.text();
words = doc.html();
Log.d("webtext", words);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
String test123 = "<h2>Title</h2><br><p>Description here</p>";
// texx.setText(words);
Log.d("localstring", test123);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
texx.setText(Html.fromHtml(words, Html.FROM_HTML_MODE_COMPACT));
} else {
texx.setText(Html.fromHtml(words));
}
}
}
}