【问题标题】:Android: Retrieving string from php page using split from the * characterAndroid:使用 * 字符拆分从 php 页面检索字符串
【发布时间】:2013-01-05 23:30:20
【问题描述】:

谁能告诉我为什么这会导致我的应用程序崩溃?同样的代码适用于我的其他应用程序,这就是我如此困惑的原因。

我要做的是告诉我的应用程序转到http://omarcomputerservices.com/cartoons/cartoons.php?getCartoon&ID=1,然后将解析后的字符串从“*”字符中拆分出来。然后将其添加到数组中。

我已添加互联网权限。

package com.omarreyes.youtubechannels;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;


public class StartingPoint extends Activity 
{


    ArrayList<String> images = new ArrayList<String>(); 

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




        Button get = (Button) findViewById(R.id.button1);
        get.setOnClickListener(listener);  
    }

    private OnClickListener listener = new OnClickListener() 
    {
        public void onClick(View v) 
        {


            getImages();



        }
    };

    private void getImages()
    {
        try 
        {
            // Create a URL object
            URL url = new URL("http://omarcomputerservices.com/cartoons/cartoons.php?getCartoon&ID=1");

            // Read all of the text returned by the HTTP server
            BufferedReader in = new BufferedReader
            (new InputStreamReader(url.openStream()));

            String htmlText;

            while ((htmlText = in.readLine()) != null) 
            {
                // Keep in mind that readLine() strips the newline characters
                String[] data = htmlText.split("\\*");



                images.add(data[0].toString());


            }
            in.close();
        } 
        catch (MalformedURLException e) 
        {
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }


}

【问题讨论】:

  • 请发布您的完整 logcat!

标签: android parsing split


【解决方案1】:

乍一看,我至少知道您的应用程序崩溃的一个原因 - getImages() 方法尝试在主 (UI) 线程上执行网络操作。

由于网络操作很耗时,它们必须在自己的线程中运行。要强制执行此规则,从 Android API 级别 11 开始,如果您尝试在 UI 线程上执行网络操作,则会抛出 NetworkOnMainThreadException

要解决此问题,您应该将访问网络的代码放入单独的线程中,例如放入AsyncTask

【讨论】:

  • 我要快速尝试一下
  • 尝试在低版本上运行,如果运行良好,我猜是网络操作的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多