2

アプリ ( extends Activity ) を Fragment ( extends SherlockFragment ) に変更したい

変更すると、多くのエラーが発生します。

public class AlarmClock extends SherlockFragment implements OnClickListener {

これは私の onCreateView です:

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

    {
        // sanity check -- no database, no clock
        if (getContentResolver() == null) {
            new AlertDialog.Builder(this)
                    .setTitle(getString(R.string.error))
                    .setMessage(getString(R.string.dberror))
                    .setPositiveButton(android.R.string.ok,
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    finish();
                                }
                            })
                    .setOnCancelListener(
                            new DialogInterface.OnCancelListener() {
                                public void onCancel(DialogInterface dialog) {
                                    finish();
                                }
                            }).setIcon(android.R.drawable.ic_dialog_alert)
                    .create().show();
            return;
        }
        View view = inflater.inflate(R.layout.alarm_clock, container, false);
        // menu buttons
        add = (ImageButton) findViewById(R.id.ibAdd);
        snooze = (ImageButton) findViewById(R.id.ibSnooze);

        add.setOnClickListener(this);
        snooze.setOnClickListener(this);
        mFactory = LayoutInflater.from(this);
        mPrefs = getSharedPreferences(PREFERENCES, 0);

        mCursor = Alarms.getAlarmsCursor(getContentResolver());
        mAlarmsList = (ListView) findViewById(R.id.alarms_list);
        mAlarmsList.setAdapter(new AlarmTimeAdapter(this, mCursor));
        mAlarmsList.setVerticalScrollBarEnabled(true);
        mAlarmsList.setItemsCanFocus(true);

        mClockLayout = (ViewGroup) findViewById(R.id.clock);

        mQuickAlarm = findViewById(R.id.ibSnooze);
        mQuickAlarm.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showQuickAlarmDialog();
            }
        });

        setVolumeControlStream(android.media.AudioManager.STREAM_ALARM);
        setQuickAlarmVisibility(mPrefs.getBoolean(PREF_SHOW_QUICK_ALARM, true));
        return view;
    }

Activityがないのでエラーが多い。アクティビティの場合は機能します。

テーブルに追加したいので、「extends SherlockFragment」を使用します。 この問題を解決するにはどうすればよいですか? 私を助けてください。

4

2 に答える 2

3

そうであれば、フラグメントは確実にアクティビティで使用する必要があります。

したがって、これを使用する代わりにgetActivity();を使用します。アクティビティ(このフラグメントを使用する)コンテキストを取得します。

何かのようなもの:

getActivity.finish();

findViewById(//some Id);の場合

次のように使用します。

inflatedView.findViewById(//Id);
于 2012-10-21T10:33:29.313 に答える
1

AFragmentは(またはContextとは異なり) ではありません。そのため、かなりの数のメソッドが利用できません。ActivityApplication

ただし、アタッチされているコンテキストにはアクセスできます。通常、getActivity()フラグメント内で呼び出して取得できます。メソッドFragmentを使用して、がアクティビティの一部であるかどうかを確認する必要があります。isAdded()

Fragments について読んだり、既存のアクティビティを Fragments を使用するように移植したりする必要があります。Google を使用してチュートリアルを利用できます。

于 2012-10-21T10:41:13.030 に答える