相关疑难解决方法(0)

如何修复android.os.NetworkOnMainThreadException?

我在为RssReader运行我的Android项目时遇到错误.

码:

URL url = new URL(urlToRssFeed);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
RssHandler theRSSHandler = new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is = new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

android.os.NetworkOnMainThreadException
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

java android android-networking networkonmainthread

2308
推荐指数
40
解决办法
115万
查看次数

从另一个线程在主线程中运行代码

在android服务中,我创建了一些用于执行某些后台任务的线程.

我有一种情况,线程需要在主线程的消息队列上发布某些任务,例如a Runnable.

有没有办法获得Handler主线程并从我的其他线程发布Message/ Runnable到它?

谢谢,

java multithreading android android-handler

302
推荐指数
11
解决办法
25万
查看次数

postInvalidate()有什么作用?

postInvalidate()Android中的这个功能有什么用?我在很多地方都看到过这个功能.当我用Google搜索时,我出来了这么多:

postInvalidate-- 在UI线程上发布无效请求

我不知道那句话"无效请求"是什么意思.有人可以详细解释这里发生了什么吗?

android invalidation android-layout

62
推荐指数
2
解决办法
3万
查看次数

Android:ProgressDialog不显示

我正在尝试为Android-App创建一个ProgressDialog(只是一个简单的显示用户正在发生的东西,没有按钮或任何东西),但我无法正确.我一直在浏览论坛和教程以及SDK附带的示例代码,但无济于事.

这就是我得到的:

    btnSubmit.setOnClickListener(new View.OnClickListener() {
      public void onClick(View view) {
        (...)
          ProgressDialog pd = new ProgressDialog(MyApp.this);
          pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
          pd.setMessage("Working...");
          pd.setIndeterminate(true);
          pd.setCancelable(false);

          // now fetch the results
          (...long time calculations here...)

          // remove progress dialog
          pd.dismiss();
Run Code Online (Sandbox Code Playgroud)

我也试过添加pd.show();和搞乱参数,new ProgressDialog导致什么都没有(除了所选参数不起作用的错误),这意味着:ProgressDialog永远不会出现.应用程序只是保持运行,就好像我从未添加过对话框一样.

我不知道我是否在正确的地方创建了对话框,我把它移动了一下但是,这也没有帮助.也许我在错误的背景下?上面的代码是内部private ViewGroup _createInputForm()MyApp.

任何提示都表示赞赏,

android progressdialog android-context

38
推荐指数
2
解决办法
7万
查看次数

从JavaScript调用Android方法

我搜索过,但我找不到答案.我正在使用HTML5和JavaScript开发基于webview的Android应用程序.我可以调用Android方法,例如makeToast()JavaScript吗?

javascript html5 android webview

34
推荐指数
1
解决办法
4万
查看次数

GlobalScope 与 CoroutineScope 与生命周期范围

AsyncTask由于它的简单性,我习惯于使用它并很好地理解它。但Coroutines让我感到困惑。您能否以简单的方式向我解释以下各项的区别和目的?

  1. GlobalScope.launch(Dispatchers.IO) {}
  2. GlobalScope.launch{}
  3. CoroutineScope(Dispatchers.IO).launch{}
  4. lifecycleScope.launch(Dispatchers.IO){}
  5. lifecycleScope.launch{}

android coroutine kotlin-coroutines

32
推荐指数
4
解决办法
9693
查看次数

Android"只有创建视图层次结构的原始线程才能触及其视图." 片段中的错误

我在我的应用程序中有这个简单的计时器,每3秒运行一次.如果它不在片段类中,它可以完美地工作.但是在片段中我总是得到错误:只有创建视图层次结构的原始线程才能触及其视图.

timer = new Timer();

timer.schedule(new TimerTask() {

    @Override
    public void run() {
        String timeStamp = new SimpleDateFormat(
                "yyyy.MM.dd HH:mm:ss").format(Calendar
                .getInstance().getTime());
        System.out.println("TimeStamp: " + timeStamp);
        // Read And Write Register Sample
        port = Integer.parseInt(gConstants.port);
        String refe = "0";// HEX Address
        ref = Integer.parseInt(refe, 16);// Hex to int
        count = 10; // the number Address to read
        SlaveAddr = 1;
        astr = gConstants.ip; // Modbus Device

        InetAddress addr;
        try {
            addr = InetAddress.getByName(astr);
            con = new TCPMasterConnection(addr); // the
            // connection …
Run Code Online (Sandbox Code Playgroud)

java multithreading android android-fragments

29
推荐指数
2
解决办法
9万
查看次数

只有创建视图层次结构的原始线程才能触及其视图.在android上

我只是一个初学者所以请原谅我提出可能是一个愚蠢的问题


我不明白只有创建视图层次结构的原始线程才能触及其视图.

请有人教我这个错误发生的原因以及如何解决这个问题.

谢谢

这是我的班级

public class MainActivity extends Activity {
    TextView title;
    Random   random  = new Random();
    int      counter = 1;

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

    private void startingUp() {
        Thread timer = new Thread() { //new thread         
            public void run() {
                Boolean b = true;
                try {
                    do {
                        counter++;
                        title();
                        sleep(1000);
                        title.clearComposingText();

                    }
                    while (b == true);
                } catch (IntruptedException e) {
                    e.printStackTrace();
                }
                finally {
                }
            };
        };
        timer.start();
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java error-handling android

22
推荐指数
2
解决办法
8万
查看次数

Android"只有创建视图层次结构的原始线程才能触及其视图."for循环中出错

我试图在每半秒运行for循环.循环在每次调用时都会在视图中改变某些东西,但是更改是由另一个类即Speedometer进行的.

Thread thread=new Thread(){
        @Override
        public void run() {
            float i;
            try {

                for ( i = 0; i <= 100; i++) {
                            Speedometer1.onSpeedChanged(Speedometer1.getCurrentSpeed(i) + 8);
                            Speedometer2.onSpeedChanged(Speedometer2.getCurrentSpeed(i) + 8);
                            Speedometer3.onSpeedChanged(Speedometer3.getCurrentSpeed(i) + 8);
                            Speedometer4.onSpeedChanged(Speedometer4.getCurrentSpeed(i) + 8);
                            Speedometer5.onSpeedChanged(Speedometer5.getCurrentSpeed(i) + 8);
                            Speedometer6.onSpeedChanged(Speedometer6.getCurrentSpeed(i) + 8);


                    sleep(500);
                }
            }
            catch (InterruptedException e)
            {e.printStackTrace();}
        }
    };thread.start();
Run Code Online (Sandbox Code Playgroud)

java multithreading android

17
推荐指数
3
解决办法
3万
查看次数

只有创建视图层次结构的原始线程才能触及其视图

我正在尝试让ImageView在我的drawable文件夹中的2个图像之间进行动画处理.

我认为一切都会正常,但日志显示错误: Only the original thread that created a view hierarchy can touch its views.

继承我的代码:

public class ExerciseActivity extends Activity {
    private ExercisesDataSource datasource;
    private Cursor cursor;
    private ImageView image_1_view;
    private Timer _timer;
    private int _index;

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

        datasource = new ExercisesDataSource(this);
        datasource.open();

        cursor = datasource.fetchExercise(exerciseDataID);

        image_1_view = (ImageView) findViewById(R.id.exercise_image);

        _index = 1;
        _timer = new Timer();
        _timer.schedule(new TickClass(), 1000);

    }

    public class TickClass extends TimerTask
    {
        private int columnIndex;

        @Override
        public void …
Run Code Online (Sandbox Code Playgroud)

android imageview

10
推荐指数
1
解决办法
3万
查看次数