0

内部に 2 つのボタンがあるフラグメントがあります。SherlockFragment クラス内で findViewById がメソッドとして認識されないため、xml ボタンを Java ボタンにアタッチできません。

SherlockFragment を SherlockFragmentActivity に変更しましたが、この方法では、OnCreateView メソッドは使用するのに適していません。代わりにどのメソッドを使用すればよいかわかりません。

バリエーション 1: findViewById がメソッドとして認識されない

public class MyProfileActionButtonsFragment extends SherlockFragment {
    private Button bMyProfileEditProfile;
    private Button bMyProfileSettings;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.my_profile_action_buttons_fragment, container, false);

        bMyProfileEditProfile = (Button) findViewById(R.id.bMyProfileEditProfile);
        bMyProfileSettings = (Button) findViewById(R.id.bMyProfileSettings);

        bMyProfileEditProfile.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent editUserProfile = new Intent (getActivity(), UserProfileEdit.class);
                startActivity(editUserProfile);

            }
        });
        bMyProfileSettings.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent settings = new Intent (getActivity(), Settings.class);
                startActivity(settings);

            }
        });
    }

バリアント 2: MyProfileActionButtonsFragment 型のメソッド onCreateView(LayoutInflater, ViewGroup, Bundle) は、スーパータイプ メソッドをオーバーライドまたは実装する必要があります

public class MyProfileActionButtonsFragment extends SherlockFragmentActivity {
    private Button bMyProfileEditProfile;
    private Button bMyProfileSettings;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.my_profile_action_buttons_fragment, container, false);

        bMyProfileEditProfile = (Button) findViewById(R.id.bMyProfileEditProfile);
        bMyProfileSettings = (Button) findViewById(R.id.bMyProfileSettings);
4

1 に答える 1

2

以下を試してください

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.my_profile_action_buttons_fragment, container, false);
bMyProfileEditProfile = (Button) view.findViewById(R.id.bMyProfileEditProfile);
bMyProfileSettings = (Button) view.findViewById(R.id.bMyProfileSettings);
bMyProfileEditProfile.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent editUserProfile = new Intent (getActivity(), UserProfileEdit.class);
            startActivity(editUserProfile);
        }
    });
bMyProfileSettings.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent settings = new Intent (getActivity(), Settings.class);
            startActivity(settings);
        }
    });
return view; 
}

削除する

return inflater.inflate(R.layout.my_profile_action_buttons_fragment, container, false);

findViewByIdボタンを初期化するために膨張したビューオブジェクトを使用する必要があるアクティビティクラスのメソッドであり、膨張したビューを返す必要があります。

于 2013-10-28T12:17:16.960 に答える