Java活用生活

ログイン

オンライン状況

オンラインユーザー1人
ログインユーザー0人
登録ユーザー2人

カウンタ

COUNTER335468

Androidスニペット

Androidスニペット >> 記事詳細
2022/06/03

assetsフォルダーres配下ではxmlエラー

固定リンク | by:aramaki
assetsフォルダーres配下ではxmlエラー
--------------------------------------------------------
Android10にアプリをインストールすると、xmlファイルにしろとエラー

どうもこれまでのようにres配下にassetsを作成するとtxtファイルは、読み込みエラー
となる模様。

そこで対応は、File→New→Folderの中にAssets Folderで「assets」を作成し、そこに
txtファイルを置く。


assets内のテキストファイルを読み込む
--------------------------------------------------------------
public static String assetsToString(Context context, String fileName){
AssetManager assetManager=context.getResources().getAssets();
InputStream inputStream=null;
StringBuilder stringBuilder=new StringBuilder();
BufferedReader bufferedReader=null;


try {
    inputStream=assetManager.open(fileName);
    // 読みこむ文字コードを指定する。
    bufferedReader=new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
    String str;
    while ((str=bufferedReader.readLine())!=null){
        stringBuilder.append(str+"\n");
    }
} catch (IOException e) {
    e.printStackTrace();
    Log.i("assetsToString>>>>>>","文字列取得失敗");
} finally {
    if(bufferedReader!=null){
        try {
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

-----------------
Tabぺージのレイアウト
※gradleに追加
implementation 'com.google.android.material:material:1.6.0'


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">
   <com.google.android.material.tabs.TabLayout
       android:id="@+id/tabLayout"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:tabIndicatorColor="@android:color/holo_blue_bright"/>

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

--------------------------------------------------------------------------]

public class HelpActivity extends FragmentActivity {

    private String[] tabTitles=new String[]{"仕様準備","使い方","動作環境"};
    private int[] icons=new int[]{R.drawable.clapboard,R.drawable.photos_polaroid,R.drawable.arrow_right};

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

        // ViewPagerの取得
        ViewPager2 pager2=findViewById(R.id.viewPager);

        // TabLaoutの取得
        TabLayout layout=findViewById(R.id.tabLayout);

        pager2.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(),getLifecycle()));

        // TabLayout と ViewPager2 を連動させる
        new TabLayoutMediator(layout, pager2,
                new TabLayoutMediator.TabConfigurationStrategy() {
                    @Override
                    public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
                        // tabのタイトル設定
                        tab.setText(tabTitles[position]);
                        // アイコン設定
                        tab.setIcon(icons[position]);

                    }
                }).attach();

    }
}
------------
Adapter

public class ViewPagerAdapter extends FragmentStateAdapter {

    private static final int NUM_TABS = 3;

    public ViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        switch (position) {
            case 0:
                return new PrepareFragment();
            case 1:
                return new HowToFragment();
            case 2:
                return new KankyouFragment();
            default:
                break;

        }
        return null;
    }

    @Override
    public int getItemCount() {
        return NUM_TABS;
    }
}





11:44