質問編集履歴

2 内容の修正

rvsezuki

rvsezuki score 58

2017/02/02 10:23  投稿

非同期通信を待つ方法
この質問は撤回します。
この質問は撤回します。
この質問は撤回します。
裏側で非同期通信を行いXMLを取ってきて表示するという仕様だが、非同期通信で
取ってきている間にメイン.javaで内容が更新されnullが返されることでエラーが発生してアプリが落ちてしまいます。
  • Java

    16197 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • XML

    769 questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • Android Studio

    4371 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1 この質問は削除

rvsezuki

rvsezuki score 58

2017/02/01 18:00  投稿

非同期通信を待つ方法
現在タブが3つあり、それぞれxmlを読み込んできて表示しております。
これをviewpagerと連携させて横スワイプ可能な3つの切り替え可能タブを作成したいです。
viewpagerとlistviewの設定はできました。
```ここに言語を入力
public class SectionsPagerAdapter extends FragmentPagerAdapter {
       public SectionsPagerAdapter(FragmentManager fm) {
           super(fm);
       }
       @Override
       public Fragment getItem(int position) {
           return MyFragment.newInstance(position + 1);
       }
       @Override
       public int getCount() {
           return 3;
       }
       @Override
       public CharSequence getPageTitle(int position) {
           return null;
       }
   }
   public static class MyFragment extends Fragment {
       private boolean mIsRequesting = false;
       private static final String ARG_SECTION_NUMBER = "section_number";
       public MyFragment() {
       }
       public static MyFragment newInstance(int page) {
           MyFragment fragment = new MyFragment();
           Bundle bundle = new Bundle();
           bundle.putInt("PAGE", page);
           fragment.setArguments(bundle);
           return fragment;
       }
       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup viewpager, Bundle savedInstanceState) {
           int page = getArguments().getInt("PAGE", 1);
           
           ListView listView = (ListView) inflater.inflate(R.layout.fragment_main, viewpager, false);
           int sectionNumber = getArguments().getInt(ARG_SECTION_NUMBER);
           ((appl) getActivity()).getNew(sectionNumber);
           //データを返却する
           NewsAdapter sectionAdapter = new NewsAdapter(getContext(), R.layout.listrow,
                   appl.newList[sectionNumber]);
           //(イ)
           //loadItems();
           //(ア)
//listView.setAdapter(sectionAdapter);
           //取得が完全に完了したらlistに返却して動く
           return listView;
}
```
と今は非同期通信で1つ1つのリストを取得しています。(つまり1のタブを押せば1を取得)
これをviewpagerによる切り替えを行うためにはリスト3つを先に読み込んでこなければなりません。上記のコードで実装したところ(ア)の部分でnullが入り止まりました。(つまり非同期通信で全部取ってこない間に(ア)の部分に来るのでnull)
これを防ぐために(イ)の部分を入れて全部取得したという承認を得たいのですが、
loadItemsはどのように書けばよいでしょうか?
この質問は撤回します。
この質問は撤回します。
この質問は撤回します。
  • Java

    16197 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • XML

    769 questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • Android Studio

    4371 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る