2

我想改變我的應用程序(擴展活動)片段(擴展SherlockFragment)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; 
    } 

有很多錯誤,因爲沒有活動。 如果是活動它的作品。

我使用「擴展SherlockFragment」,因爲我想將它添加到表中。 如何解決這個問題?請幫幫我。

+0

什麼錯誤?上下文錯誤 –

+0

方法getContentResolver()是未定義的類型的AlarmClock 方法findViewById(INT)是未定義的類型的AlarmClock 的方法完成()是未定義的類型新DialogInterface.OnClickListener(){} 等 – user1704195

回答

3

如果沒錯,碎片必須在活動中使用。

所以不是使用這個使用getActivity();獲取活動(使用此片段)上下文。

類似:

getActivity.finish(); 

findViewById(//一些標識)的情況;

使用這樣的:

inflatedView.findViewById(//Id); 
+0

inflatedView無法解析。 我必須使用Fragments,因爲我需要在Tabs中使用它。 這是我主要的Activity(Launcher)public class ABSTabsViewPagerActivity extends SherlockFragmentActivity – user1704195

+0

getView()的工作。 – user1704195

+0

或getActivity()它也可以工作 –

1

Fragment不是Context(不像ActivityApplication)。所以有很多方法不可用。

但它可以訪問它所連接的上下文。通常,您可以在片段中調用getActivity()以獲取它。您應該使用isAdded()方法檢查Fragment是否屬於該活動的一部分。

您應該閱讀關於碎片,將現有活動移植爲使用碎片,...使用Google提供的教程。

+1

我無法找到很好的教程。 – user1704195

+0

如何在擴展SherlockFragment時使用onCreateOptionMenu作爲ActionBarSherlock? @MarvinLabs –

相關問題