Kontext aus einem Fragment abrufen

Ich habe eine Klasse erstellt, um Kommentare aus einer JSON-Codierung aus einer PHP-Datei abzurufen. Diese Klasse erstreckt sich von AsyncTask:

public class RecuperarComentarisFoto extends AsyncTask<String, String, String>{ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(????); pDialog.setMessage("Creating Product.."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } @Override protected String doInBackground(String... arg0) { // TODO Auto-generated method stub return null; } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); } } 

Wie Sie sehen können, versuche ich, einen ProgressDialog zu zeigen, während der "doInBackground" -Prozess funktioniert. Aber progressDialog-Konstruktor, fragt nach einem Kontext, und ich weiß nicht, wie man es liefert.

  • Eclipse Android - Logcat Clearing zu schnell
  • Android Studio einfache Unit Test funktioniert nicht
  • Android OpenGL ES und 2D
  • Google Drive-Integration mit der aktuellen Aktivität
  • Datenbank wird nicht entfernt, wenn die Android-Anwendung deinstalliert wird
  • AChartEngine transparenter Hintergrund
  • Ich nenne diese Klasse aus einem Fragment, also kann ich nicht auf den Kontext wie folgt zugreifen:

     pDialog = new ProgressDialog(MyFragmentA.context); 

    Die "Haupt" -Aktivität heißt: AndroidViewPagerActivity, die FragmentActivity erweitert.

    (Hauptsächlich ich meine, dass es das ist, das die Tabs erstellt und die Navigation zwischen ihnen verwaltet.)

    Das ist der Code:

     public class AndroidViewPagerActivity extends FragmentActivity { ViewPager mViewPager; TabsAdapter mTabsAdapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mViewPager = new ViewPager(this); mViewPager.setId(R.id.pager); setContentView(mViewPager); final ActionBar bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME); bar.hide(); mTabsAdapter = new TabsAdapter(this, mViewPager); mTabsAdapter.addTab(bar.newTab().setText("Fragment A"), MyFragmentA.class, null); if (savedInstanceState != null) { bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0)); } } 

    Wie kann ich auf den Kontext zugreifen? Welchen Kontext soll ich verwenden? "AndroidViewPagerActivity" Kontext? Wie kann ich also aus einem Fragment auf seinen Kontext zugreifen?

    Vielen Dank.

    Sergi

  • Überprüfen und Vermeiden von Speicherlecks in der Anwendung
  • Wie bekomme ich Telefonkontakte in Android
  • Android: Benachrichtigung aus der Benachrichtigungsleiste entfernen
  • AppCompat-Stil Hintergrund in das Bild in der ToolBar weitergegeben
  • Speichern von EditText-Inhalten in RecyclerView
  • Wie überprüfe ich, ob eine Ressource in Android existiert
  • 3 Solutions collect form web for “Kontext aus einem Fragment abrufen”

    Verwenden Sie getActivity() innerhalb des Fragment , um einen Context zu erhalten, den Sie weitergeben können. Das funktioniert, da Activity vom Context erbt.

    Als Alternative können Sie getApplicationContext() , um den Context zu erhalten.

    Okay, jetzt weiß ich etwas Neues:

    • Du musst den Kontext aus der Klasse bekommen, die das Fragment instanzierte.

    Sie tun dies, indem Sie diese in Ihren Code in das Fragment ("das Kind").

     Context cont; cont=getActivity(); 

    Also, sobald du den Kontext hast, passierst du es. In meinem Fall musste ich ihm eine AsyncTask-Klasse übergeben, also kann ich einen Dialog zeigen.

     new RecuperarComentarisFoto(cont).execute(); 

    Und um dies zu beenden, habe ich in der Klasse "RecuperarComentarisFoto" einen Konstruktor erstellt. Wie ich gelesen habe, ist es ok, es so zu machen.

     private Context mContext; public RecuperarComentarisFoto(Context context){ this.mContext=context; } 

    Und die Magie:

     @Override protected void onPreExecute() { super.onPreExecute(); ProgressDialog pDialog = new ProgressDialog(this.mContext); pDialog.setMessage("Creating Product.."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } 

    Das alles endet mit: Bildbeschreibung hier eingeben

    FragmentActivity Dies wird Ihnen Kontext der Aktivität geben und dann können Sie es an Ihre AsyncTask übergeben.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.