1

私の FragmentActivity はループして多数の Fragment を作成し、それぞれに `new TextView. いくつかの助けの後、私はこれを持っています:

FragmentActivity.java

    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        for (int j=0; j<positionsCount; j++) {
            ...
            mTabsAdapter = new PositionFragmentAdapter(this, mViewPager);
            mTabsAdapter.addTab(bar.newTab().setText("My Tab Name"), Fragment.class, args);
        }
    }

Fragment.java

public class Fragment extends Fragment {

    private static int id = 0;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        LinearLayout mLinearLayout = new LinearLayout(getActivity());
        TextView mTextView = new TextView(getActivity());
        mTextView.setId(id);
        id++;
        mLinearLayout.addView(mTextView);

        return mLinearLayout;
    }

    @Override
    public void onStart() {
        super.onStart();
        Bundle args = getArguments();
        id.setText(args.get("posName").toString()); // ERROR HERE: "Cannot invoke setText(String) from primitive type int"
    }
}

どうすればエラーを止めることができますか?

編集2:

06-11 12:54:53.843: E/AndroidRuntime(21005): java.lang.NullPointerException
06-11 12:54:53.843: E/AndroidRuntime(21005):    at com.example.guide.Fragment.onStart(Fragment.java:33)
06-11 12:54:53.843: E/AndroidRuntime(21005):    at android.support.v4.app.Fragment.performStart(Fragment.java:1484)
...
4

1 に答える 1

0

TextView ではなく、整数で setText を呼び出しています。これの代わりに

id.setText(args.get("posName").toString());

これを行う:

mTextView.setText(args.get("posName").toString());

他のメソッドからアクセスできるように、TextView を Fragment のインスタンス変数にする必要があることに注意してください。

public class Fragment extends Fragment {
    TextView mTextView;
于 2013-06-11T11:20:57.680 に答える