15

ビューページャーのタイトルを設定しようとしていますが、機能していないようです。Resources.getSystem().getString(R.string.title1); を試しました。また、コンテキストを渡そうとしました。誰でも私を助けることができますか?

public class ViewPagerAdapter extends FragmentPagerAdapter {
    final int PAGE_COUNT = 3;
    Context context;

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }

    @Override
    public Fragment getItem(int position) {
        return PageFragment.create(position + 1);
    }

    @Override
    public CharSequence getPageTitle(int position) {

        switch (position) {

        case 0:
            return Resources.getSystem().getString(R.string.title1);

        case 1:
            return Resources.getSystem().getString(R.string.title1);

        case 2:
            return Resources.getSystem().getString(R.string.title1);
        }

        return null;
    }
}

ログキャット:

09-02 17:40:33.160: E/AndroidRuntime(3116): FATAL EXCEPTION: main
09-02 17:40:33.160: E/AndroidRuntime(3116): android.content.res.Resources$NotFoundException: String resource ID #0x7f050003
09-02 17:40:33.160: E/AndroidRuntime(3116):     at android.content.res.Resources.getText(Resources.java:230)
09-02 17:40:33.160: E/AndroidRuntime(3116):     at android.content.res.Resources.getString(Resources.java:314)
4

9 に答える 9

44

アクティビティのコンテキストから getString を呼び出す必要があります。コードを次のように変更します。

public class ViewPagerAdapter extends FragmentPagerAdapter {
    final int PAGE_COUNT = 3;
    Context context;

    public ViewPagerAdapter(FragmentManager fm, Context nContext) {
        super(fm);
        context = nContext;
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }

    @Override
    public Fragment getItem(int position) {
        return PageFragment.create(position + 1);
    }

    @Override
    public CharSequence getPageTitle(int position) {

        switch (position) {

        case 0:
            return context.getString(R.string.title1);

        case 1:
            return context.getString(R.string.title1);

        case 2:
            return context.getString(R.string.title1);
        }

        return null;
    }
}
于 2013-09-02T18:04:05.137 に答える
14

エラー メッセージによると、要求している ID を持つ文字列がありません。

複数の言語をサポートしていて、特定の言語に対してこの種の文字列 ID しか持っていない可能性はありますか?

とにかく、このコード行:

String yourstring = getResources().getString(R.string.yourstring);

リソースから文字列を取得する方法です。などの をgetResources()拡張するクラスにいるときはいつでも呼び出すことができます。ContextActivity

于 2013-09-02T18:00:58.263 に答える
7

アクティビティの外部から文字列リソースにアクセスしようとしている場合は、コンテキストをそのクラスに渡し (既に行ったと述べています)、次に呼び出す必要があります。

String str = context.getResources().getString(R.string.some_string);

また、strings.xmlファイルをチェックして、文字列 ID を正しく使用していることを確認してください。Android Studio を使用している場合は、入力を開始するだけR.string.で、strings.xml ファイルから候補が表示されます。ここにリソースが表示されない場合は、リソースへのアクセス方法ではなく、リソースの保存方法に問題があることを示している可能性があります。

于 2013-09-03T03:22:48.850 に答える
1

利用可能な using: getContext().getString(resId)like: を使用するだけです:

getContext().getString(R.string.title1)

それは私のために働いた。

于 2016-07-21T16:50:31.913 に答える