我想将我的应用程序(扩展活动)更改为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;
}
由于没有活动,因此存在很多错误。 如果它是活动的话。
我使用“extends SherlockFragment”,因为我想将它添加到表中。 怎么解决这个问题?请帮帮我。
答案 0 :(得分:3)
如果是对的,必须在活动中使用碎片。
因此,不要使用这个使用 getActivity(); 来获取Activity(使用此片段)上下文。
类似的东西:
getActivity.finish();
如果是 findViewById(//某些ID);
像这样使用它:
inflatedView.findViewById(//Id);
答案 1 :(得分:1)
Fragment
不是Context
(与Activity
或Application
不同)。因此,有很多方法无法使用。
然而,它可以访问它所附加的上下文。通常,您可以在片段中调用getActivity()
来获取它。您应该使用Fragment
方法检查isAdded()
是否属于活动的一部分。
您应该阅读有关片段的内容,将现有活动移植到使用片段,...可以使用Google进行教程。