Как получить популярные темы в твиттере по нажатию кнопки Android - twitter4j?

Я изучаю Android в течение небольшого периода времени и пытаюсь добавить некоторые функции Twitter в свои приложения.

Что я пытаюсь сделать, так это получить популярные темы в твиттере и поместить их в строку, а затем отобразить их в текстовом представлении. Является ли это возможным? Я почти ничего не нашел в Интернете, поэтому надеюсь, что вы можете мне помочь.

`

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


    getTrendingButton = (Button) findViewById(R.id.gettrendingbutton);
    trendingList = (TextView) findViewById(R.id.trendinglist);



    cb = new ConfigurationBuilder();
    cb.setApplicationOnlyAuthEnabled(false);
    cb.setOAuthConsumerKey("key")
            .setOAuthConsumerSecret("key")
            .setOAuthAccessToken("key")
            .setOAuthAccessTokenSecret("key");

    twitterFactory = new TwitterFactory(cb.build());
    twitter = twitterFactory.getInstance();


}

@Override
protected void onStart()
{
    super.onStart();

    getTrendingButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            String trendsString = " ";
            Trends trends;
            try {
                trends = twitter.getPlaceTrends(1);
                int count = 0;
                for (Trend trend : trends.getTrends()) {
                    if (count < 10)
                    {
                        trendsString = trend.getName().toString() + "\n";
                    }
                    trendingList.setText(trendsString);
                }
            } catch (TwitterException e) {
                e.printStackTrace();
            }

        }
    });


}`

и здесь анализ стека

android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1448) at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:102) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:90) at java.net.InetAddress.getAllByName(InetAddress.java:787) at com.android.okhttp.Dns$1.lookup(Dns.java:39) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:200) at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:148) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:90) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:190) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:489) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:435) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:566) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(Unknown Source:0) at twitter4j.HttpResponseImpl.(HttpResponseImpl.java:35) at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:149) at twitter4j.HttpClientBase.request(HttpClientBase.java:57) at twitter4j.HttpClientBase.get(HttpClientBase.java:75) at twitter4j.TwitterImpl.get(TwitterImpl.java:2066) at twitter4j.TwitterImpl.getPlaceTrends(TwitterImpl.java:1912) at gusmappdev.myapp.TrendingActivity$1.onClick(TrendingActivity.java:77) at android.view.View.performClick(View.java:6897) at android.widget.TextView.performClick(TextView.java:12693) at android.view.View$PerformClick.run(View.java:26100) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6942) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Надеюсь, вы, ребята, можете мне помочь :) Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
88
2

Ответы 2

Вы должны сделать доступ к сети в другом потоке. Не разрешено выполнять сетевые вызовы в основном потоке приложения. Вот почему вы получаете NetworkOnMainThreadException.

Вот пример того, как это можно решить: Как исправить исключение android.os.NetworkOnMainThreadException?

Есть способ использовать метод getPlaceTrends() с экземпляром AsyncTwitter. Однако в этом случае метод void, и я не уверен, как вы можете сохранить результаты.

Другие вопросы по теме