Ich habe zwei ListFragments (A und B, die eigentlich SherlockListFragments
sind) und wenn ich einen Breakpoint in die onCreateOptionsMenu
in beiden Fragmenten einfüge, wird Fragment A dreimal und Fragment B zweimal getroffen. Darüber hinaus bin ich Animieren einer der Menü-Symbol, wenn ein AsyncTask
läuft, und wenn ich ein Element in Fragment A auswählen, wird onCreateOptionsMenu
erneut aufgerufen und das Symbol verdoppeln:onCreateOptionsMenu trifft mehrfach mit Fragmenten
Ich bin nicht sicher warum onCreateOptionsMenu
erneut aufgerufen, weil ich nur eine Methode in dem „Details“ Fragment Aufruf:
@Override
public void onListItemClick(final ListView l, final View v, final int position, final long id)
{
DetailsFragment fragment = (DetailsFragment)getFragmentManager().findFragmentById(R.id.fragmentDetails);
if (fragment != null && fragment.isInLayout())
{
fragment.DisplayItems();
}
else
{
final Intent listing = new Intent(activity.getApplicationContext(), DetailsFragmentActivity.class);
startActivity(listing);
}
}
UPDATE:
ich diesen Code mit dem Menüpunkt zu animieren:
private MenuItem refreshItem;
private void DoRefresh()
{
final LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ImageView ivRefresh = (ImageView)inflater.inflate(R.layout.refresh_view, null);
final Animation rotation = AnimationUtils.loadAnimation(activity, R.anim.refresh);
ImageView ivRefresh.startAnimation(rotation);
refreshItem.setActionView(ivRefresh);
//AsyncTask is kicked off here
}
@Override
public boolean onOptionsItemSelected(final MenuItem item)
{
if (item.getItemId() == R.id.refresh) {
refreshItem = item;
this.DoRefresh();
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
Ich habe etwas Code zu meinem OP, die zeigt, wie ich die Menüpunkte aktualisieren.Nicht sicher, ob dies das Menü ungültig ist.Was "DisplayItems" tut, habe ich nicht der Code vor mir, aber es füllt im Grunde einen benutzerdefinierten Adapter für eine "ListView". Sollte das Menü überhaupt nicht beeinflussen. –
Also, ich bin ein Idiot und ich habe "InvalidateOptionsMenu" in den "DisplayItems" eingefügt "Funktion vor einer Weile und habe vergessen, es herauszunehmen, aber ich werde Ihnen die Ehre geben, das Menü als Ursache ungültig zu machen. –
froh, dass Sie das Problem gefunden haben. –