2017-06-29 3 views
0

Ich bekomme einen Fehler in der startActionMode() Methode. Mit Cast parameter to android.view.ActionMode.Callback Ausdruck sagt, ich muss Casting-Transaktion zu tun, aber es ist nicht die Lösung. Ich kenne dieses Problem nicht.Ich bekomme einen Fehler in der startActionMode() Methode

Sie den Code anschauen können:

package com.egemenzeytinci.contextmenuactionmode; 
import android.os.Build; 
import android.support.annotation.RequiresApi; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.view.ActionMode; 
import android.support.v7.view.menu.ActionMenuItemView; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

private android.view.ActionMode actionMode; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView text= (TextView) findViewById(R.id.text); 

    text.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 

      if(actionMode!=null) { 
       return false; 
      } 

      MyActionModeCallBack callBack=new MyActionModeCallBack(); 
      actionMode=startActionMode(callBack); //problem is here!!! 
      v.setSelected(true); 

      return true; 
     } 
    }); 
} 

class MyActionModeCallBack implements ActionMode.Callback { 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     mode.getMenuInflater().inflate(R.menu.context_menu,menu); 
     return true; 
    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     return false; 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     actionMode=null; 
    } 
} 
} 

Antwort

0

Klasse MyActionModeCallBack implementiert android.view.ActionMode.Callback {

@Override 
    public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) { 
     return false; 
    } 

    @Override 
    public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) { 
     return false; 
    } 

    @Override 
    public void onDestroyActionMode(android.view.ActionMode mode) { 

    } 

}}

+0

Verwenden Sie diese android.view.ActionMode.Callback anstelle von ActionMode.Callback hoffe, es wird funktionieren thnku –

0

Sie dont't benötigen eine Referenz Aktionsmodus, um es zu implementieren. Daher, anstatt die Methode actionMode=startActionMode(callBack); auf diese Weise aufzurufen, rufen Sie es so startActionMode(callBack); Dies soll tun.

+0

Ich versuche dies: startActionMode ((android.view.ActionMode.Callback) callBack); gibt keinen Fehler, aber diesmal öffnet der Simulator die Anwendung nicht. –

+0

Es muss ein Fehler vorliegen, ansonsten muss die Anwendung geöffnet werden. –

0

Es sollte so aussehen:

private ActionMode actionMode; 

Nicht dies:

private android.view.ActionMode actionMode; 

Und so sein sollte:

actionMode=startSupportActionMode(callBack); 

Nicht dies:

actionMode=startActionMode(callBack); 
Verwandte Themen