Autore Topic: Context Menu in TextView  (Letto 662 volte)

Offline lorenzoz

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 12.04 , Windows 7
Context Menu in TextView
« il: 21 Giugno 2012, 22:05:51 CEST »
0
Ciao a tutti !!
Come da titolo , ho svariate tablerow che a loro volta hanno 5 textview.Vorrei poter cliccare ogni textview in modo da visualizzare un menu con le tre solite stringhe : edita - nuovo - salva.Non riesco a implementare il tutto dopo aver letto varie guide ho solo fatto un po di confusione.Posto il codice dell'activity principale ( unica e non estende ListActivity ma solo Activity )
Codice (Java): [Seleziona]
public class TableLayout extends Activity{
    /** Called when the activity is first created. */
        private TextView TipologiaMenu;
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
   
                InputStream xmlUrl = getApplicationContext().getResources().openRawResource(R.raw.lista_difetti);
       
        ParserXML parser=new ParserXML(); //otteniamo un istanza del nostro parser
       
                parser.parseXml(xmlUrl);//usiamo il parser
                ArrayList<Difetti> difettiList=parser.getParsedData(); //lista dei difetti che la listview visualizzerà
     
                ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
               
                for(int i=0;i<difettiList.size();i++){
            Difetti d=difettiList.get(i);// per ogni persona all'inteno della ditta
           
            HashMap<String,Object> mappaDifetti=new HashMap<String, Object>();//creiamo una mappa di valori
           
            mappaDifetti.put("tipologia", d.getTipologia()); // per la chiave tipologia, inseriamo la risorsa della tipologia
            mappaDifetti.put("inizio", d.getInizio()); // per la chiave inizio,l'informazine sull'inizio
            mappaDifetti.put("fine", d.getFine());// per la chiave fine, l'informazione sulla fine
            mappaDifetti.put("settore", d.getSettore()); // pr la chiave data , l'informazione sulla data
            data.add(mappaDifetti);  //aggiungiamo la mappa di valori alla sorgente dati
    }
               
                String[] from={"tipologia","inizio","fine","settore"}; //dai valori contenuti in queste chiavi
        int[] to={R.id.tipologia1,R.id.inizio1,R.id.fine1, R.id.settore1};//agli id delle view
       
       
        //costruzione dell adapter
       SimpleAdapter adapter=new SimpleAdapter(
                        getApplicationContext(),
                        data,//sorgente dati
                        R.layout.difetti_view, //layout contenente gli id di "to"
                        from,
                        to);
       
        //utilizzo dell'adapter
        ((ListView) findViewById(R.id.difettiView)).setAdapter(adapter);
     
     
    }

}
Datemi una mano :D Ho già creato una cartella in res/menu/context_menu con le stringhe da visualizzare nel menu ma di piu non capisco come fare ho ottenuto sempre vari errori

Offline lorenzoz

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 12.04 , Windows 7
Re:Context Menu in TextView
« Risposta #1 il: 21 Giugno 2012, 22:15:28 CEST »
0
Ho provato seguendo un tutorial e ho aggiunto :
Codice (Java): [Seleziona]
 super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView Tipologia = (TextView)findViewById(R.id.tipologia1);
        registerForContextMenu(Tipologia);

proprio all'inizio e poi i metodi:
Codice (Java): [Seleziona]
@Override
         public boolean onContextItemSelected(MenuItem item) {
          // TODO Auto-generated method stub
           
          Toast.makeText(TableLayout.this,
            String.valueOf(item.getItemId()),
            Toast.LENGTH_LONG).show();
           
          return super.onContextItemSelected(item);
         }
         
         @Override
         public void onCreateContextMenu(ContextMenu menu, View v,
           ContextMenuInfo menuInfo) {
          // TODO Auto-generated method stub
          super.onCreateContextMenu(menu, v, menuInfo);
          MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
         }
L'errore è nella riga
Codice (Java): [Seleziona]
registerForContextMenu(Tipologia) mi torna Null.