1

我的 FragmentActivity 循环并创建了许多 Fragment,每个 Fragment 都带有`new TextView. 经过一些帮助,我有这个:

片段活动.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);
        }
    }

片段.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

您在整数上调用 setText,而不是 TextView。而不是这个

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 回答