I frammenti non verranno visualizzati in attività che estendono ActionBarActivity

Ho un'attività principale che estende ActionBarActivity. Nella mia attività creo un frammento che non viene mostrato. Ho modificato l'attività principale per estendere FragmentActivity e in questo caso il frammento sta mostrando. Perché il frammento non viene mostrato quando la mia attività estende ActionBarActivity? So che ActionBarActivity estende FragmentActivity in modo teorico ActionBarActivity dovrebbe supportre frammenti.

Edit: lo ho risolto. Non definirei alcuna visione del contenuto della mia attività. Ora che ho impostato funziona quando estendo ActionBarActivity. Ancora è strano che anche se non lo metto, quando estendo FragmentActivity funziona.

  • Client TCP Android. Il server riceve solo messaggi dopo il process viene arrestato
  • Installazione Gradle avente un problema proxy
  • Gradiente arrotondato nella barra Progress Bar personalizzata
  • Android: come notificare l'attività quando le viste di frammenti sono pronte?
  • L'applicazione Android scompare a volte dalla schermata delle applicazioni
  • Come aprire un'attività diversa sul recyclerView item onclick
  • Questo è il mio codice principale di attività:

    package com.example.yamba; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; //import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; public class StatusActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState == null) { StatusFragment fragment = new StatusFragment(); FragmentTransaction fr = getSupportFragmentManager().beginTransaction(); fr.add(android.R.id.content, fragment); fr.commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.status, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 

    Questo è il mio codice di frammento:

     package com.example.yamba; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.EditText; import android.widget.Toast; import android.os.AsyncTask; import android.text.TextWatcher; import android.text.Editable; import android.view.LayoutInflater; import android.view.ViewGroup; import android.support.v4.app.Fragment; import com.marakana.android.yamba.clientlib.YambaClient; import com.marakana.android.yamba.clientlib.YambaClientException; public class StatusFragment extends Fragment implements OnClickListener { private static final String TAG = "StatusFragment"; private EditText editStatus; private Button buttonTweet; private TextView textCount; private int defaultColor; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = inflater.inflate(R.layout.activity_fragment, container, false); editStatus = (EditText) view.findViewById (R.id.editStatus); buttonTweet = (Button) view.findViewById (R.id.buttonTweet); textCount = (TextView) view.findViewById (R.id.textCount); buttonTweet.setOnClickListener(this); defaultColor = textCount.getTextColors().getDefaultColor(); editStatus.addTextChangedListener(new TextWatcher() { public void afterTextChanged (Editable s) { int count = 140 - editStatus.length(); textCount.setText(Integer.toString(count)); textCount.setTextColor(Color.GREEN); if(count<20 && count >= 10) textCount.setTextColor(Color.YELLOW); else if (count<10) textCount.setTextColor(Color.RED); else textCount.setTextColor(defaultColor); } public void beforeTextChanged(CharSequence s, int start, int count, int after){} public void onTextChanged (CharSequence s, int start, int b, int c){} }); return view; } public void onClick(View view) { String status = editStatus.getText().toString(); Log.d(TAG, "onClicked with status: " + status); new PostTask().execute(status); editStatus.getText().clear(); } private final class PostTask extends AsyncTask<String, Void, String> { protected String doInBackground(String... params) { YambaClient yambaCloud = new YambaClient("student", "password"); try { yambaCloud.postStatus(params[0]); return "Succesfuly posted!"; } catch (YambaClientException e) { e.printStackTrace(); return "Failed to post to yamba sevice!"; } } @Override protected void onPostExecute (String result) { super.onPostExecute(result); Toast.makeText(StatusFragment.this.getActivity(), result, Toast.LENGTH_LONG).show(); } } } 

  • Come controllare in modo programmato la disponibilità di connessione internet in Android?
  • Android: come contrassegnare sms come letto in onReceive
  • Ottieni gli angoli SW & NE dell'API di Google Static Maps
  • come ripristinare tutti gli archivi memorizzati memorizzati utilizzando le preferenze condivise
  • Linker Android: indefinito riferimento a bsd_signal
  • Differenza tra android: id e android: labelFor?
  • 2 Solutions collect form web for “I frammenti non verranno visualizzati in attività che estendono ActionBarActivity”

    Stai chiamando il metodo FragmentManager inserito nel contenitore sbagliato. L'id che fornisci deve riferirsi a una vista (di solito un layout) che fa parte del layout dell'attività. Così android.R.id.content è certamente sbagliato, esamina il tuo layout xml attività e trova l'id corretto (forse è R.id.content (senza android)?)

    Sembra essere un bug . Come soluzione potrebbe cercare di aggiungere frammento all'interno di un command post. Ha fatto il trucco per me.

     new Handler().post(new Runnable() { @Override public void run() { StatusFragment fragment = new StatusFragment(); FragmentTransaction fr = getSupportFragmentManager().beginTransaction(); fr.add(android.R.id.content, fragment); fr.commit(); } }); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.