Hi,
ich mache grad ein Android-Buch durch und der Author sagt mit item.getMenuInfo() in onContextItemSelected kann ich Zugriff auf die View bekommen die selektiert wurde. Leider ist das im Buch nur so eine Randbemerkung. Ich habs aber trotzdem versucht hinzubekommen, aber item.getMenuInfo() gibt immer nur null zurück. Entweder ich hab irgendwas vergessen oder irgendwas falsch gemacht
kann mir da jemand helfen?
PS: Die View, die ich für das context-Menu registriert habe ist eine einfache textview mit 2 elementen.
Hier ist der Code:
Code
package com.example.menudemo;
import com.example.menudemo.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity
{
private MenuItem menu_cut;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text_view=(TextView)findViewById(R.id.textview1);
registerForContextMenu(text_view);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu_1, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
//HERE: item.getMenuInfo(); returns null
AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();
View kontext=info.targetView;
switch (item.getItemId())
{
case R.id.cut:
String text="cut selected (mit onContextItemSelected)!";
Toast einToast =Toast.makeText(this, text, Toast.LENGTH_SHORT);
einToast.show();
return true;
default: return super.onContextItemSelected(item);
}
}
}
Alles anzeigen