当前位置: 首页 > 知识库问答 >
问题:

Android应用程序将只显示一个JSON元素

屠瑞
2023-03-14

04-24 23:24:29.782 8144-8589/com.webdesigners.stockmarketW/System.err:android.view.ViewRootImpl$CalledFromWrongThreadExctive:只有创建视图层次结构的原始线程才能触摸其视图。04-24 23:24:29.783 8144-8589/com.webdesigners.stockmarketW/System.err:android.view.ViewRootImpl.check线程(ViewRootImpl.java:6357)04-24 23:24:29.783 8144-8589/com.webdesigners.stockmarketW/System.err:在android.view.ViewRootImpl.invalidateChildIn家长(ViewRootImpl.java:909)04-24 23:24:29.783 8144-8589/com.webdesigners.stockmarketW/System.err:在android.view.ViewGroup.invalidate儿童(ViewGroup.java:4690)04-24 23:24:29.783 8144-8589/com.webdesigners.stockmarketW/System.err: at android. view.无效内部(View. java: 11801)04-24 23:24:29.783 8144-8589/com. webDesigners. stock Market W/System. err: at android. view.无效(View. java: 11765)04-24 23:24:29.783 8144-8589/com. webDesigners. stock Market W/System. err: at android. view.view.无效(View. java: 11749)04-24 23:24:29.783 8144-8589/com. webDesigners. stock Market W/System. err: at android. idget. TextView. check ForRelayout(TextView. java: 6850)04-24 23:24:29.783 8144-8589/com. webDesigners. stock Market W/System. err: at android. idget. TextView. setText(TextView. java: 4057)04-24 23:24:29.783 8144-8589/com. webDesigners. stock Market W/System. err: at android. Widget. TextView. setText(TextView. java: 3915)04-24 23:24:29.783 8144-8589/com. webDesigners. stock Market W/System. err: at android. Widget.TextView. setText(TextView. java: 3890)04-24 23:24:29.784 8144-8589/com. webDesigners. stock Market W/System. err: at com. webDesigners. stock Market. MainActivity1 Dollar1 Dollar1 Dollar1 Dollar1. onReader(MainActivity. java: 74)04-24 23:24:29.784 8144-8589/com. webDesigners. stock Market W/System. err: at okhttp p3. RealCall$AsyncCall.执行(RealCall. java: 133)04-24 23:24:29.784 8144-8589/com. webDesigners. stock Market W/System. err: at okhttp p3. interal.NamedRunnable. run(NamedRunnable. java: 32)04-24 23:24:29.784 8144-8589/com. webDesigners. stock Market W/System. err: at java. utili. con电流. ThreadPoolExecutor. runWorker(ThreadPoolExecutor. java: 1112)04-24 23:24:29.784 8144-8589/com. webDesigners. stock Market W/System. err: at java. utili. con电流. ThreadPoolExecitor$Worker. run(ThreadPoolExecutor. java: 587)04-24 23:24:29.784 8144-8589/com. webDesigners. stock Market W/System. err: at java. lang. Thread. run(Thread. java: 818)

        searchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String userSymbol = searchEditText.getText().toString();

            try
            {
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder().url("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22" + userSymbol + "%22%29&env=store://datatables.org/alltableswithkeys&format=json").build();
                client.newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        e.printStackTrace();
                    }

                    @Override
                    public void onResponse(Call call, final Response response) throws IOException {
                        if (!response.isSuccessful())
                        {

                        }
                        else
                        {
                            String responseData = response.body().string();
                            try
                            {
                                TextView symbol = (TextView)findViewById(R.id.symbol);
                                TextView change = (TextView)findViewById(R.id.change);

                                //get object at "quote" level where most attributes are
                                JSONObject jsonObject = new JSONObject(responseData);
                                JSONObject query = jsonObject.getJSONObject("query");
                                JSONObject results = query.getJSONObject("results");
                                JSONObject quote = results.getJSONObject("quote");

                                Long changeValue = quote.getLong("Change");
                                String changeString = Long.toString(changeValue);
                                assert change != null;
                                change.setText(changeString);

                                assert symbol != null;
                                String companyName = quote.getString("Name");
                                String companyNameConcat = "Name: " + companyName;
                                symbol.setText(companyNameConcat);

                            }
                            catch(Exception e)
                            {
                                e.printStackTrace();
                            }
                        }
                    }
                });
            }
            catch(Exception e)
            {

            }
        }
    });

共有3个答案

笪涛
2023-03-14
Long changeValue = quote.getLong("Change");
String changeString = Long.toString(changeValue);
assert change != null;
change.setText(changeString);

//将上述代码更改为

assert change != null;
String changeValue = quote.getString("Change");
change.setText(changeValue);

存储更改String,将其检索为String并转换为Long

汪才英
2023-03-14

之后的

String responseData = response.body().string();
try
{

在那里放一个for循环。例如:

for (int i = 0; i < 2; i++) {
// Code here
}
冀胤运
2023-03-14

您的回调不在主线程上执行。这就是您看到错误的原因。当您需要更新用户界面时,请调用runOnUiThread。

 类似资料:
  • 我有一个java应用程序,它在运行时会产生另一个JVM。然而,我想使用jpack打包我的应用程序,它运行得很好。但是在运行时,当我的应用程序尝试使用调用下一个JVM时 我必须知道,应用程序是使用定制的JVM启动的,并且没有像“java”这样的命令。所以我得到的错误是这个java。无法执行getAbsolutePath()。 如果没有java可执行文件,我的应用程序如何在单独的进程中运行另一个jar

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • 我很难同时运行我的广告和应用程序。我花了两天的时间试图找到一个解决方案,但什么都没用。请帮忙。 这段代码显示我的google play services Admob广告——广告显示,但我看不到我的游戏屏幕,它是黑色背景。 此代码(注释掉的广告代码)成功运行我的游戏。是什么原因导致这两种方法无法协同工作? 你好,威廉。我刚刚开始学习Java,我使用的教程已经开始了http://www.kilobol

  • 我们的用户一直在报告我们的渐进式Web应用程序没有出现在他们的应用程序抽屉里。我在运行谷歌Chrome65的三星Galaxy S5和S6上复制了这一点。我使用菜单“添加到主屏幕”,图标显示在主屏幕上,但不显示在“应用程序”抽屉或应用程序管理器设置屏幕。 这表明我的PWA没有得到“webapk”(也就是“改进后添加到主屏幕”)的治疗,但我不知道为什么。根据谷歌的链接,改进后的A2HS在Chrome

  • null 这是我第一次尝试将Firebase集成到我的一个项目中,因此一些关于实现这项任务的指导将是非常有用的。 谢了!

  • Google在这里有一个很好的页面展示了如何这样做:https://developer.android.com/distribute/tools/promote/linking.html 基本上,使用这段代码,它将打开Play Store到新apps页面: 我错过了什么?我肯定它非常简单,也许我需要进口的东西。 解决方案:导入Uri类是一个问题。我仍然不确定新的热键是什么来导入它。Apple-Sh