2

Je veux changer mon application (étend l'activité) Fragment (étend SherlockFragment)Activité à SherlockFragment

Si je change, j'ai beaucoup d'erreurs;

public class AlarmClock extends SherlockFragment implements OnClickListener { 

Ceci est mon 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; 
    } 

Il y a beaucoup d'erreurs parce qu'il n'y a pas d'activité. Si c'est Activité ça marche.

J'utilise "extends SherlockFragment" parce que je veux l'ajouter à la table. Comment résoudre ce problème? Aidez-moi, s'il vous plaît.

+0

Quelles sont les erreurs? Erreurs de contexte ?? –

+0

La méthode getContentResolver() est définie pour le type AlarmClock La méthode findViewById (int) est définie pour le type AlarmClock La méthode finish() est définie pour le type nouveau DialogInterface.OnClickListener() {} etc. – user1704195

Répondre

3

Si vous avez raison, les Fragments doivent absolument être utilisés dans une activité.

Donc, au lieu d'utiliser ce utilisez getActivity(); pour obtenir le contexte Activity (qui utilise ce fragment).

quelque chose comme:

getActivity.finish(); 

et en cas de findViewById (// une pièce d'identité);

utiliser comme ceci:

inflatedView.findViewById(//Id); 
+0

inflatedView ne peut pas être résolu. Je dois utiliser des fragments car j'ai besoin de l'utiliser dans les onglets. Ceci est ma principale activité publique (Launcher) ABSTabsViewPagerActivity étend SherlockFragmentActivity – user1704195

+0

getView() travail. – user1704195

+0

ou getActivity() cela fonctionne aussi –

1

Un Fragment n'est pas un Context (contrairement Activity ou Application). Donc, pas mal de méthodes ne sont pas disponibles.

Il a cependant accès au contexte auquel il est attaché. Habituellement, vous pouvez appeler getActivity() dans le fragment pour l'obtenir. Vous devriez vérifier si le Fragment fait partie de l'activité en utilisant la méthode isAdded().

Vous devriez lire les Fragments, porter des activités existantes pour utiliser des Fragments, ... des tutoriels sont disponibles avec Google.

+1

Je ne trouve pas de bon tutoriel. – user1704195

+0

comment utiliser onCreateOptionMenu pour ActionBarSherlock lors de l'extension de SherlockFragment? @MarvinLabs –

Questions connexes