android - SherlockFragment 的 Activity

标签 android android-activity android-fragments actionbarsherlock

我想将我的应用程序(扩展 Activity )更改为 Fragment (扩展 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,所以出现很多错误。 如果是 Activity 则有效。

我使用“extends SherlockFragment”,因为我想将其添加到表中。 如何解决这个问题?请帮助我。

最佳答案

如果我是对的,那么 Fragment 肯定必须在 Activity 中使用。

因此,不要使用 this,而是使用 getActivity(); 来获取 Activity(使用此 fragment )上下文。

类似于:

getActivity.finish();

如果是findViewById(//some Id);

像这样使用它:

inflatedView.findViewById(//Id);

关于android - SherlockFragment 的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996889/

相关文章:

java - :CordovaLib:compileDebugJavaWithJavac - is not incremental

android - 旋转屏幕时丢失数据

android - 自动短信应用程序崩溃

java - Activity 应该只在手机中的应用程序第一次运行时运行一次

java - 如何在java中的多个类中使用一个接口(interface)?

android - 如何 float View 查看所有 Activity

java - 如何删除DatePickerDialog背景

java - Firebase 计算重复条目数

java - 如何在android库中包含内部jar文件

android - 在对话框 fragment 中方向改变目标 fragment 改变后