首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Button从片段中打开Rss阅读器活动

使用Button从片段中打开Rss阅读器活动
EN

Stack Overflow用户
提问于 2014-05-27 22:01:40
回答 1查看 774关注 0票数 0

我一直在做一个我想在世界杯开始前完成的项目。我一直在使用来自AndroidHive的AndroidHive和一个RssReader。我也是android程序的新手,在使用片段时遇到了很多麻烦。

基本上,我希望使用来自每个片段的TextViews和Imageview来显示足球组数据。我一直遇到的问题是应用一个按钮,它实际上打开了活动而不崩溃。这个问题以前曾在这个线程中被问过:

How to start Activity from Fragment? Android

我一直在尝试实现异步任务,但我就是无法让它工作。代码与我发布的链接中所描述的100%相同。

这是两个文件的压缩,有人能帮我吗?http://www.file-upload.net/download-8963794/SlidingMenu.zip.html

提前感谢任何能帮我的人!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 22:47:55

只需执行以下操作即可使代码正常工作:

只需复制并粘贴如下所示。除了那件事没什么可做的。如果您需要对代码进行更多的解释,请告诉我。

注意:要从片段开始活动,需要使用getActivity(),然后使用这样的意图,

代码语言:javascript
复制
Intent intent = new Intent(getActivity(),
                        AndroidRssReader.class);
                getActivity().startActivity(intent);

1)只需在FindPeopleFragment:中稍微修改代码

代码语言:javascript
复制
public class FindPeopleFragment extends Fragment {

    public FindPeopleFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_find_people,
                container, false);

        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);

        Button newPage = (Button) getActivity().findViewById(R.id.button1);
        newPage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(),
                        AndroidRssReader.class);
                getActivity().startActivity(intent);
            }
        });

    }
}

2)将AndroidRssReader修改为:

代码语言:javascript
复制
public class AndroidRssReader extends ListActivity {

    private List<String> item = new ArrayList<String>();
    public static final String MAIN_URL = "http://drinkandtink.bugs3.com/covendos/Android-er%3Fformat%3Dxml";

    Context context;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        context = this;

        new BackgroundTask(context, MAIN_URL).execute();

    }

    public void getImpData(String URL) {

        try {
            URL rssUrl = new URL(URL);
            SAXParserFactory mySAXParserFactory = SAXParserFactory
                    .newInstance();
            SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
            XMLReader myXMLReader = mySAXParser.getXMLReader();
            RSSHandler myRSSHandler = new RSSHandler();
            myXMLReader.setContentHandler(myRSSHandler);
            InputSource myInputSource = new InputSource(rssUrl.openStream());
            myXMLReader.parse(myInputSource);

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public class BackgroundTask extends AsyncTask<Void, Void, Void> {

        Context mcontext;
        String someURL;
        ProgressDialog pDialog;

        public BackgroundTask(Context context, String SomeURL) {

            super();
            this.mcontext = context;
            this.someURL = SomeURL;

        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            pDialog = new ProgressDialog(context);
            pDialog.setMessage("Checking Network Connection");
            pDialog.setIndeterminate(true);
            pDialog.setMax(100);
            pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

            getImpData(someURL);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            ArrayAdapter<String> itemList = new ArrayAdapter<String>(context,
                    R.layout.rsslist, item);
            setListAdapter(itemList);
            pDialog.dismiss();
        }

    }

    private class RSSHandler extends DefaultHandler {
        final int stateUnknown = 0;
        final int stateTitle = 1;
        int state = stateUnknown;

        @Override
        public void startDocument() throws SAXException {
            // TODO Auto-generated method stub
        }

        @Override
        public void endDocument() throws SAXException {
            // TODO Auto-generated method stub
        }

        @Override
        public void startElement(String uri, String localName, String qName,
                Attributes attributes) throws SAXException {
            // TODO Auto-generated method stub
            if (localName.equalsIgnoreCase("title")) {
                state = stateTitle;
            } else {
                state = stateUnknown;
            }
        }

        @Override
        public void endElement(String uri, String localName, String qName)
                throws SAXException {
            // TODO Auto-generated method stub
            state = stateUnknown;
        }

        @Override
        public void characters(char[] ch, int start, int length)
                throws SAXException {
            // TODO Auto-generated method stub
            String strCharacters = new String(ch, start, length);
            if (state == stateTitle) {
                item.add(strCharacters);

            }
        }

    }

}

它运行得很好,now..make肯定会接受我对未来观众的回答。快乐..。:D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23899694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档