GVKun编程网logo

MVVM 下 ContextMenu的命令绑定(mvvm如何实现绑定)

15

以上就是给各位分享MVVM下ContextMenu的命令绑定,其中也会对mvvm如何实现绑定进行解释,同时本文还将给你拓展android–onCreateContextMenu使用ContextMen

以上就是给各位分享MVVM 下 ContextMenu的命令绑定,其中也会对mvvm如何实现绑定进行解释,同时本文还将给你拓展android – onCreateContextMenu使用ContextMenuInfo的null值调用、android – 像ContextMenu一样获取PopupMenu的上下文、Android 的选项菜单OptionsMenu和上下文菜单ContextMenu的使用案例、android.view.ContextMenu.ContextMenuInfo的实例源码等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

MVVM 下 ContextMenu的命令绑定(mvvm如何实现绑定)

MVVM 下 ContextMenu的命令绑定(mvvm如何实现绑定)

原文: MVVM 下 ContextMenu的命令绑定

  由于ContextMenu不继承父级的DataContext,所以如果要绑定父级的DataContext,直接DataContext=“{Binding}”是行不通的。因此可通过以下两个方式解决绑定的问题。

1、使用资源的方式

 1         <Button Content="Test" Command="{Binding TestCommand}">
 2             <Button.Resources>
 3                 <vm:Threeviewmodel x:Key="Three"/>
 4             </Button.Resources>
 5             <Button.ContextMenu>
 6                 <ContextMenu>
 7                     <MenuItem Header="测试" Command="{Binding TestCommand,Source={StaticResource Three}}"/>
 8                 </ContextMenu>
 9             </Button.ContextMenu>
10         </Button>
11     

 

2、利用ContextMenu的PlacementTarget属性

        <Button Content="Test" Command="{Binding TestCommand}">
            <Button.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="测试" Command="{Binding PlacementTarget.DataContext.TestCommand,RelativeSource={RelativeSource AncestorType=ContextMenu} }"/>
                </ContextMenu>
            </Button.ContextMenu>
        </Button>

android – onCreateContextMenu使用ContextMenuInfo的null值调用

android – onCreateContextMenu使用ContextMenuInfo的null值调用

我正在尝试使用ContextMenu.
我已经使用SimpleCursorAdapter为一个简单的ListActivity成功完成了这个.
接下来我想用CursorAdapter替换SimpleCursorAdapter但仍然保留ContextMenu行为,所以我添加了两个强制覆盖函数bindView和newView

public View newView(Context context, Cursor cursor, ViewGroup parent) {
    View view = mLayoutInflater.inflate(R.layout.check_row, parent, false);
    registerForContextMenu(view);
    return view;
}

请注意registerForContextMenu,它替换了ListActivity的onCreate方法中的registerForContextMenu(getListView()).我发现有必要调用onCreateContextMenu(…)

所有这些都可行(使用预期的小部件创建的行,对它们的回调等工作等).除了提供给onCreateContextMenu(…)的ContextMenuInfo参数现在为null之外的所有内容 – 停止我访问rowId.
还有其他技巧要做 – 也许是在CursorAdapter的bindView(…)方法中?

解决方法:

我正在回答这个问题 – 但我会指出’commonsware.com’提供了线索和方向,见上文.
问题
  – 在行布局中使用CheckBox会影响上下文菜单的使用
  – 我相信CheckedTextView是用于多选的,它不适合初始化已检查状态.

我采用的解决方案如下
 1.使用CheckedTextView
 2.从CursorAdapter扩展到bindView(…)期间初始化检查状态
注意:这必须管理显示正确的图标
 3.在onListItemClick(…)中管理CheckedTextView的状态并将其记录在dBase中,不要忘记更新光标.

android – 像ContextMenu一样获取PopupMenu的上下文

android – 像ContextMenu一样获取PopupMenu的上下文

所以我的ExpandableListView具有定义如下的组行:

group_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/GroupName"android:paddingLeft="40dp"
        android:textSize="18sp" >
    </TextView>

    <ImageView
        android:id="@+id/Menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dp"
        android:contentDescription="@string/default_content_description_text"
        android:src="@drawable/ic_menu_moreoverflow_normal_holo_light" >
    </ImageView>

</RelativeLayout>

当您单击TextView时,它将展开或折叠,具体取决于当前是否显示子行.我已将OnClickListener附加到组行中的ImageView.单击此ImageView时,我启动一个PopupMenu,如下图所示:

显示PopupMenu并单击其中一个操作后,我想对该组的所有子项执行操作.问题是我无法确定单击ImageView的行.

我想出如何将动作应用于所有孩子的唯一方法是使用ContextMenu,如下图所示:

我想避免使用ContextMenu,因为组行上的LongClick可能不明显,用户无法确定它会对子行执行某些操作.我认为更明显的设计是将PopupMenu锚定到ImageView(在我的例子中是菜单图标)并将操作应用于该组的子行.如何使用PopupMenu获得此功能?

解决方法

所以我发现,为了获得点击了哪个菜单图标的上下文,我使用了View类的 setTag()和 getTag()方法,并将这些方法应用于ImageView(菜单图标).

Android 的选项菜单OptionsMenu和上下文菜单ContextMenu的使用案例

Android 的选项菜单OptionsMenu和上下文菜单ContextMenu的使用案例

1、选项菜单OptionsMenu和上下文菜单ContextMenu 效果如下:

 2、MainActivity 

package com.example.aidldemo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class Main3Activity extends AppCompatActivity {

    private TextView tv;

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

        tv = findViewById(R.id.textView2);
        registerForContextMenu(tv);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.action_bar_menu,menu);
        return super.onCreateOptionsMenu(menu);

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case R.id.search:
                Toast.makeText(this,"search",Toast.LENGTH_SHORT).show();
                break;
            case R.id.msg:
//                Toast.makeText(this,"msg",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(this,MainActivity.class);
                startActivity(intent);
                break;
            case R.id.setting:
                Toast.makeText(this,"设置",Toast.LENGTH_SHORT).show();
                break;
            case R.id.about :
                Toast.makeText(this,"关于",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.context_menu, menu);
        super.onCreateContextMenu(menu, v, menuInfo);
    }




    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch(item.getItemId()){

            case R.id.copy:
                Toast.makeText(this,"copy",Toast.LENGTH_SHORT).show();
                break;
            case R.id.collect :
                Toast.makeText(this,"collect",Toast.LENGTH_SHORT).show();
                break;
            case R.id.report :
                Toast.makeText(this,"report",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onContextItemSelected(item);
    }


}

3、在res目录下的menu目录下创建action_bar_menu.xml选项菜单和context_menu.xml上下文菜单:

 选项菜单 action_bar_menu.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="搜索"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />
    <item
        android:id="@+id/msg"
        android:actionLayout="@layout/fragment_list"
        android:icon="@android:drawable/ic_menu_sort_by_size"
        android:title="搜索"
        app:showAsAction="always" />
    <item
        android:id="@+id/setting"
        android:icon="@drawable/ic_looks_one"
        android:title="设置" />
    <item
        android:id="@+id/about"
        android:icon="@drawable/ic_looks_two"
        android:title="关于" />
</menu>

上下文菜单 context_menu.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/copy"
        android:title="复制" />
    <item
        android:id="@+id/collect"
        android:title="收藏" />
    <item
        android:id="@+id/report"
        android:title="举报" />
</menu>

3、activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main3Activity">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Context Menu"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

4、清单文件 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.aidldemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Main3Activity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <activity android:name=".MainActivity">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                        android:value=".Main3Activity"></meta-data>

     
        </activity>
    </application>

</manifest>

 

android.view.ContextMenu.ContextMenuInfo的实例源码

android.view.ContextMenu.ContextMenuInfo的实例源码

项目:yaacc-code    文件:ContentListActivity.java   
/**
 * Creates context menu for certain actions on a specific item.
 */
@Override
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    if (v instanceof ListView) {
        ListView listView = (ListView) v;
        Object item = listView.getAdapter().getItem(info.position);
        if (item instanceof DIDLObject) {
            selectedDIDLObject = (DIDLObject) item;
        }
    }
    menu.setHeaderTitle(v.getContext().getString(
            R.string.browse_context_title));
    ArrayList<String> menuItems = new ArrayList<String>();
    menuItems.add(v.getContext().getString(R.string.browse_context_play_all));
    menuItems.add(v.getContext().getString(R.string.browse_context_play));
    //menuItems.add(v.getContext().getString( R.string.browse_context_add_to_playplist));
    menuItems.add(v.getContext()
            .getString(R.string.browse_context_download));
    for (int i = 0; i < menuItems.size(); i++) {
        menu.add(Menu.NONE,i,menuItems.get(i));
    }
}
项目:CSipSimple    文件:CodecsFragment.java   
@Override
@SuppressWarnings("unchecked")
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info;
    try {
         info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    } catch (ClassCastException e) {
        Log.e(THIS_FILE,"bad menuInfo",e);
        return;
    }

    HashMap<String,Object> codec = (HashMap<String,Object>) mAdapter.getItem(info.position);
    if (codec == null) {
        // If for some reason the requested item isn't available,do nothing
        return;
    }

    boolean isdisabled = ((Short)codec.get(CODEC_PRIORITY) == 0);
    menu.add(0,MENU_ITEM_ACTIVATE,isdisabled ? R.string.activate : R.string.deactivate);

}
项目:CSipSimple    文件:AccountsEditListFragment.java   
/**
 * Retrieve sip account from a given context menu info pressed
 * @param cmi The context menu info to retrieve infos from
 * @return corresponding sip profile if everything goes well,null if not able to retrieve profile
 */
private SipProfile profileFromContextMenuInfo(ContextMenuInfo cmi) {
    AdapterView.AdapterContextMenuInfo info;
    try {
        info = (AdapterView.AdapterContextMenuInfo) cmi;
    } catch (ClassCastException e) {
        Log.e(THIS_FILE,e);
        return null;
    }
    Cursor c = (Cursor) getlistadapter().getItem(info.position - getListView().getHeaderViewsCount());
    if (c == null) {
        // For some reason the requested item isn't available,do nothing
        return null;
    }
    return new SipProfile(c);
}
项目:CSipSimple    文件:AccountsEditListFragment.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu,v,menuInfo);
    final SipProfile account = profileFromContextMenuInfo(menuInfo);
    if(account == null) {
        return;
    }
    WizardInfo wizardInfos = WizardUtils.getWizardClass(account.wizard);

    // Setup the menu header
    menu.setHeaderTitle(account.display_name);
    if(wizardInfos != null) {
        menu.setHeaderIcon(wizardInfos.icon);
    }

    menu.add(0,account.active ? R.string.deactivate_account
            : R.string.activate_account);
    menu.add(0,MENU_ITEM_MODIFY,R.string.modify_account);
    menu.add(0,MENU_ITEM_DELETE,R.string.delete_account);
    menu.add(0,MENU_ITEM_WIZARD,R.string.choose_wizard);

}
项目:chromium-for-android-56-debug-video    文件:RecentTabsPage.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    // Would prefer to have this context menu view managed internal to RecentTabsGroupView
    // Unfortunately,setting either onCreateContextMenuListener or onLongClickListener
    // disables the native onClick (expand/collapse) behavIoUr of the group view.
    ExpandableListView.ExpandableListContextMenuInfo info =
            (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;

    int type = ExpandableListView.getPackedPositionType(info.packedPosition);
    int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);

    if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
        mAdapter.getGroup(groupPosition).onCreateContextMenuForGroup(menu,mActivity);
    } else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
        int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition);
        mAdapter.getGroup(groupPosition).onCreateContextMenuForChild(childPosition,menu,mActivity);
    }
}
项目:financisto1-holo    文件:AbstractListActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    AdapterView.AdapterContextMenuInfo mi = (AdapterView.AdapterContextMenuInfo)menuInfo;
    String headerTitle = getContextMenuHeaderTitle(mi.position);
    if (headerTitle != null) {
        menu.setHeaderTitle(headerTitle);
    }
    List<MenuItemInfo> menus = createContextMenus(mi.id);
    int i = 0;
    for (MenuItemInfo m : menus) {
        if (m.enabled) {
            menu.add(0,m.menuId,i++,m.titleId);              
        }
    }
}
项目:exciting-app    文件:ExpandableHListView.java   
@Override
ContextMenuInfo createContextMenuInfo( View view,int flatListPosition,long id ) {
    if( isHeaderOrFooterPosition( flatListPosition ) ) {
        // Return normal info for header/footer view context menus
        return new AdapterContextMenuInfo( view,flatListPosition,id );
    }

    final int adjustedPosition = getFlatPositionForConnector( flatListPosition );
    ExpandableHListConnector.PositionMetadata pm = mConnector.getUnflattenedPos( adjustedPosition );
    ExpandableHListPosition pos = pm.position;

    id = getChildOrGroupId( pos );
    long packedPosition = pos.getPackedPosition();

    pm.recycle();

    return new ExpandableListContextMenuInfo( view,packedPosition,id );
}
项目:aos-Video    文件:AutoScraperActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,View view,view,menuInfo);

    // Show the name of the file in the header
    AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo)menuInfo;
    int position = adapterMenuInfo.position;
    mActivityFileCursor.movetoPosition(position);
    String path = mActivityFileCursor.getString(mDataIndex);
    MetaFile file = MetaFile.from(path);
    menu.setHeaderTitle(file.getName());

    // Add the context menu items
    menu.add(0,R.string.info,R.string.info);

    // Save the path,we will need it when an entry of the menu is selected
    mContextMenuPath = path;
}
项目:buildAPKsSamples    文件:AccountsActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
  if (v.getId() != R.id.accounts_list) {
    return;
  }

  AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
  Account account = (Account) adapter.getItem(info.position);
  menu.setHeaderTitle(account.toString());

  String[] menuItems = getResources().getStringArray(R.array.account_actions);
  for (int i = 0; i < menuItems.length; i++) {
    menu.add(Menu.NONE,menuItems[i]);
  }
}
项目:encdroidMC    文件:EDVolumeListActivity.java   
public void onCreateContextMenu(ContextMenu menu,menuInfo);

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.volume_list_context,menu);

    // Change the text of the lock/unlock item based on volume status
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
    EDVolume selected = mAdapter.getItem((int) info.id);

    MenuItem lockItem = menu.findItem(R.id.volume_list_menu_lock);

    if (selected.isLocked()) {
        lockItem.setTitle(getString(R.string.menu_unlock_volume));
    } else {
        lockItem.setTitle(getString(R.string.menu_lock_volume));
    }
}
项目:microMathematics    文件:Commander.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo)
{
    try
    {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        if (info != null)
        {
            fileListView.setSelection(info.position,0);
        }
        menu.setHeaderTitle(R.string.fman_operation);
        AdapterIf ca = getlistadapter();
        ca.populateContextMenu(menu,info,fileListView.getSelected());
    }
    catch (Exception e)
    {
        e.printstacktrace();
    }
}
项目:SmartMath    文件:ActivityCfgKeyPad.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu,menuInfo);
    if (v.getTag() instanceof InputKeyReference)    {
        menu.setHeaderTitle(R.string.what_do_you_want);
        menu.add(0,KEY_CONTEXT_MENU_CUT,R.string.cut_key);  
        menu.add(0,KEY_CONTEXT_MENU_copY,R.string.copy_key);  
        if (minputKeyRefClipboard.isEmpty() == false)   {
            menu.add(0,KEY_CONTEXT_MENU_PASTE_BEFORE,R.string.paste_before_key);  
            menu.add(0,KEY_CONTEXT_MENU_PASTE_ON,R.string.paste_on_key);
            menu.add(0,KEY_CONTEXT_MENU_PASTE_AFTER,R.string.paste_after_key);
        }
        menu.add(0,KEY_CONTEXT_MENU_CREATE_BEFORE,R.string.create_before_key);  
        menu.add(0,KEY_CONTEXT_MENU_CREATE_AFTER,R.string.create_after_key);  
        menu.add(0,KEY_CONTEXT_MENU_DELETE,R.string.delete_key);  
        menu.add(0,KEY_CONTEXT_MENU_EDIT,R.string.edit_key); 
        // should not use assign,i.e. minputKeyrefunderOpt = v.getTag()
        // cause minputKeyrefunderOpt and tag may change in different scenarios
        minputKeyrefunderOpt.copy((InputKeyReference) v.getTag());
    }
}
项目:q-mail    文件:FolderList.java   
@Override public void onCreateContextMenu(ContextMenu menu,menuInfo);
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
    getMenuInflater().inflate(R.menu.folder_context,menu);

    FolderInfoHolder folder = (FolderInfoHolder) mAdapter.getItem(info.position);

    menu.setHeaderTitle(folder.displayName);
}
项目:q-mail    文件:Accounts.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    menu.setHeaderTitle(R.string.accounts_context_menu_title);

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
    BaseAccount account =  mAdapter.getItem(info.position);

    if ((account instanceof Account) && !((Account) account).isEnabled()) {
        getMenuInflater().inflate(R.menu.disabled_accounts_context,menu);
    } else {
        getMenuInflater().inflate(R.menu.accounts_context,menu);
    }

    if (account instanceof SearchAccount) {
        for (int i = 0; i < menu.size(); i++) {
            android.view.MenuItem item = menu.getItem(i);
                item.setVisible(false);
        }
    }
    else {
        EnumSet<ACCOUNT_LOCATION> accountLocation = accountLocation(account);
        if (accountLocation.contains(ACCOUNT_LOCATION.TOP)) {
            menu.findItem(R.id.move_up).setEnabled(false);
        }
        else {
            menu.findItem(R.id.move_up).setEnabled(true);
        }
        if (accountLocation.contains(ACCOUNT_LOCATION.BottOM)) {
            menu.findItem(R.id.move_down).setEnabled(false);
        }
        else {
            menu.findItem(R.id.move_down).setEnabled(true);
        }
    }
}
项目:PeSanKita-android    文件:VerifyIdentityActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo)
{
  super.onCreateContextMenu(menu,menuInfo);

  MenuInflater inflater = getActivity().getMenuInflater();
  inflater.inflate(R.menu.verify_display_fragment_context_menu,menu);

}
项目:CSipSimple    文件:AccountFiltersListFragment.java   
/**
 * Retrieve filter id from a given context menu info pressed
 * @param cmi The context menu info to retrieve infos from
 * @return corresponding filter id if everything goes well,-1 if not able to retrieve filter
 */
private long filterIdFromContextMenuInfo(ContextMenuInfo cmi) {
    AdapterView.AdapterContextMenuInfo info;
    try {
        info = (AdapterView.AdapterContextMenuInfo) cmi;
    } catch (ClassCastException e) {
        Log.e(THIS_FILE,e);
        return -1;
    }
    return info.id;
}
项目:CSipSimple    文件:AccountFiltersListFragment.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    final long filterId = filterIdFromContextMenuInfo(menuInfo);
    if(filterId == -1) {
        return;
    }

    menu.add(0,R.string.edit);
    menu.add(0,R.string.delete_filter);

}
项目:open-rmbt    文件:RMBTSyncRequestCodeFragment.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo contextMenuInfo)
{
    if (view instanceof TextView && view == codeText)
        menu.add(Menu.NONE,view.getId(),Menu.NONE,R.string.sync_request_code_context_copy);
    else
        super.onCreateContextMenu(menu,contextMenuInfo);
}
项目:chromium-for-android-56-debug-video    文件:ContextMenuHelper.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    assert mPopulator != null;
    mPopulator.buildContextMenu(menu,v.getContext(),mCurrentContextMenuParams);

    for (int i = 0; i < menu.size(); i++) {
        menu.getItem(i).setonMenuItemClickListener(this);
    }
}
项目:buildAPKsApps    文件:Trolly.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info;
       try {
            info = (AdapterView.AdapterContextMenuInfo) menuInfo;
       } catch (ClassCastException e) {
           return;
       }
    Cursor cursor = (Cursor)getlistadapter().getItem(info.position);
    if (cursor == null) {
           // For some reason the requested item isn't available,do nothing
           return;
       }
       // Setup the menu header
       menu.setHeaderTitle(cursor.getString(cursor.getColumnIndex(ShoppingList.ITEM)));
       int status = cursor.getInt(cursor.getColumnIndex(ShoppingList.STATUS));

    //Add context menu items depending on current state
    switch (status) {
       case ShoppingList.OFF_LIST:
        menu.add(0,MENU_ITEM_ON_LIST,R.string.move_on_list);
        menu.add(0,MENU_ITEM_IN_TROLLEY,R.string.move_in_trolley);
        break;
       case ShoppingList.ON_LIST:
        menu.add(0,R.string.move_in_trolley);
        menu.add(0,MENU_ITEM_OFF_LIST,R.string.move_off_list);
        break;
       case ShoppingList.IN_TROLLEY:
        menu.add(0,R.string.move_off_list);
        break;
       }

       // Add context menu items that are relevant for all items
    menu.add(0,MENU_ITEM_EDIT,R.string.edit_item);
    menu.add(0,R.string.delete_item);
}
项目:buildAPKsApps    文件:SimplyDoActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo)
{
    Log.v(L.TAG,"ItemsListReactor.onCreateContextMenu()");

    AdapterContextMenuInfo ctxMenuInfo = (AdapterContextMenuInfo)menuInfo;
    ListView listView = (ListView)findViewById(R.id.ItemsListView);
    ctxItem = (ItemDesc)listView.getItemAtPosition(ctxMenuInfo.position);

    menu.setHeaderTitle("Item Options");
    menu.add(Menu.NONE,EDIT_ITEM,"Edit");
    menu.add(Menu.NONE,DELETE_ITEM,"Delete");
    String toggleText;
    if(ctxItem.isstar())
    {
        toggleText = "Remove Star";
    }
    else
    {
        toggleText = "Add Star";
    }
    menu.add(Menu.NONE,TOGGLE_STAR,toggleText);
    if(dataViewer.getListData().size() > 1)
    {
        menu.add(Menu.NONE,MOVE_ITEM,"Move To");
    }
}
项目:buildAPKsApps    文件:SimplyDoActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,"ListsListReactor.onCreateContextMenu()");

    AdapterContextMenuInfo ctxMenuInfo = (AdapterContextMenuInfo)menuInfo;
    ListView listView = (ListView)findViewById(R.id.ListsListView);
    ctxList = (ListDesc)listView.getItemAtPosition(ctxMenuInfo.position);

    menu.setHeaderTitle("List Options");
    menu.add(Menu.NONE,EDIT_LIST,DELETE_LIST,"Delete");
}
项目:buildAPKsApps    文件:BarrageList.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    menu.clear();

    menu.add(0,MENU_EDIT,R.string.menu_edit);
    menu.add(0,MENU_PAUSE,R.string.menu_pause);
    menu.add(0,MENU_DELETE,R.string.menu_delete);
}
项目:buildAPKsApps    文件:RecipientsEditor.java   
@Override
protected ContextMenuInfo getContextMenuInfo() {
    if ((mLongpressedPosition >= 0)) {
        Spanned text = getText();
        int start = mTokenizer.findTokenStart(text,mLongpressedPosition);
        int end = mTokenizer.findTokenEnd(text,start);

        if (end != start) {
            Recipient r = getRecipientAt(getText(),start,end);
            return new RecipientContextMenuInfo(r);
        }
    }
    return null;
}
项目:Huochexing12306    文件:MonitorMangAty.java   
private void setListViewContextMenuWithDel() {
    lvMang.setonCreateContextMenuListener(new OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
            intCurrDataPos = ((AdapterContextMenuInfo) menuInfo).position;
            menu.add(0,"删除");
        }
    });
}
项目:Huochexing12306    文件:MonitorMangAty.java   
private void setListViewContextMenuWithDel_Resume() {
    lvMang.setonCreateContextMenuListener(new OnCreateContextMenuListener() {

        @Override
        public void onCreateContextMenu(ContextMenu menu,"删除");
            menu.add(0,1,"恢复所有已暂停车次");
        }
    });
}
项目:aos-Video    文件:SubtitlesWizardActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);

    AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo)menuInfo;
    mPosition = adapterMenuInfo.position;

    ItemData itemData = getItemData(mPosition);
    if (itemData.type == ITEM_DATA_TYPE_SEParaTOR || itemData.type == ITEM_DATA_TYPE_MESSAGE) {
        // No contextual menu for separators or messages
        return;
    }

    // Show the name of the file in the header
    File file = new File(itemData.path);
    menu.setHeaderTitle(file.getName());

    if (itemData.type == ITEM_DATA_TYPE_CURRENT) {
        // Contextual menu for current subtitles files
        menu.add(0,R.string.subtitles_wizard_delete,R.string.subtitles_wizard_delete);
    }
    else {
        // Contextual menu for available subtitles files
        menu.add(0,R.string.subtitles_wizard_associate,R.string.subtitles_wizard_associate);
        menu.add(0,R.string.subtitles_wizard_delete);
    }
}
项目:aos-Video    文件:browserActivity.java   
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    if (DBG)
        Log.d(TAG,"onCreateContextMenu");
    if ((mCoverRoll != null) && v.equals(mCoverRoll)) {
        mCoverRoll.createContextMenu(this,menu);
    }
    super.onCreateContextMenu(menu,menuInfo);
}
项目:buildAPKsSamples    文件:Notepadv2.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);

       // Todo: fill in rest of method
}
项目:android-mrz-reader    文件:CaptureActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    if (v.equals(ocrResultView)) {
        menu.add(Menu.NONE,OPTIONS_copY_RECOGNIZED_TEXT_ID,"copy recognized text");
        menu.add(Menu.NONE,OPTIONS_SHARE_RECOGNIZED_TEXT_ID,"Share recognized text");
    } else if (v.equals(translationView)) {
        menu.add(Menu.NONE,OPTIONS_copY_TRANSLATED_TEXT_ID,"copy translated text");
        menu.add(Menu.NONE,OPTIONS_SHARE_TRANSLATED_TEXT_ID,"Share translated text");
    }
}
项目:encdroidMC    文件:EDFileChooserActivity.java   
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    MenuInflater inflater = getMenuInflater();
    if (mMode == FILE_PICKER_MODE) {
        inflater.inflate(R.menu.file_picker_context,menu);
    } else {
        inflater.inflate(R.menu.file_chooser_context,menu);
    }
}
项目:firebase-testlab-instr-lib    文件:NotesList.java   
@Override
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info;
    try {
         info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    } catch (ClassCastException e) {
        Log.e(TAG,e);
        return;
    }

    Cursor cursor = (Cursor) getlistadapter().getItem(info.position);
    if (cursor == null) {
        // For some reason the requested item isn't available,do nothing
        return;
    }

    // Inflate menu from XML resource
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.list_context_menu,menu);

    // Set the context menu header
    menu.setHeaderTitle(cursor.getString(COLUMN_INDEX_TITLE));

    // Append to the
    // menu items for any other activities that can do stuff with it
    // as well.  This does a query on the system for any activities that
    // implement the ALTERNATIVE_ACTION for our data,adding a menu item
    // for each one that is found.
    Intent intent = new Intent(null,Uri.withAppendedpath(getIntent().getData(),Integer.toString((int) info.id) ));
    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
    menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE,new ComponentName(this,NotesList.class),null,intent,null);
}
项目:XPrivacy    文件:ActivityApp.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);

    // Check if running
    boolean running = false;
    ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    for (RunningAppProcessInfo info : activityManager.getRunningAppProcesses())
        if (info.uid == mAppInfo.getUid())
            running = true;

    PackageManager pm = getPackageManager();
    List<String> listPackageNames = mAppInfo.getPackageName();
    List<String> listApplicationName = mAppInfo.getApplicationName();
    for (int i = 0; i < listPackageNames.size(); i++) {
        Menu appMenu = (listPackageNames.size() == 1) ? menu : menu.addSubMenu(i,listApplicationName.get(i));

        // Launch
        MenuItem launch = appMenu.add(i,MENU_LAUNCH,getString(R.string.menu_app_launch));
        if (pm.getLaunchIntentForPackage(listPackageNames.get(i)) == null)
            launch.setEnabled(false);

        // Settings
        appMenu.add(i,MENU_SETTINGS,getString(R.string.menu_app_settings));

        // Kill
        MenuItem kill = appMenu.add(i,MENU_KILL,getString(R.string.menu_app_kill));
        kill.setEnabled(running && PrivacyManager.isApplication(mAppInfo.getUid()));

        // Play store
        MenuItem store = appMenu.add(i,MENU_STORE,getString(R.string.menu_app_store));
        if (!Util.hasMarketLink(this,listPackageNames.get(i)))
            store.setEnabled(false);
    }
}
项目:Cable-Android    文件:VerifyIdentityActivity.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);

  if (fingerprint != null) {
    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(R.menu.verify_display_fragment_context_menu,menu);
  }
}
项目:yaacc-code    文件:PlayerListItemClickListener.java   
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    menu.setHeaderTitle(v.getContext().getString(R.string.browse_context_title));
    ArrayList<String> menuItems = new ArrayList<String>();
    menuItems.add(v.getContext().getString(R.string.open));
    menuItems.add(v.getContext().getString(R.string.exitactivity));

    for (int i = 0; i < menuItems.size(); i++) {
        menu.add(Menu.NONE,menuItems.get(i));
    }
}
项目:GCSApp    文件:ContactListFragment.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    toBeProcessUser = (EaseUser) listView.getItemAtPosition(((AdapterContextMenuInfo) menuInfo).position);
    toBeProcessUsername = toBeProcessUser.getUsername();
    getActivity().getMenuInflater().inflate(R.menu.em_context_contact_list,menu);
}
项目:q-mail    文件:MessageListFragment.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
    Cursor cursor = (Cursor) listView.getItemAtPosition(info.position);

    if (cursor == null) {
        return;
    }

    getActivity().getMenuInflater().inflate(R.menu.message_list_item_context,menu);
    menu.findItem(R.id.debug_delete_locally).setVisible(BuildConfig.DEBUG);

    contextMenuUniqueId = cursor.getLong(uniqueIdColumn);
    Account account = getAccountFromCursor(cursor);

    String subject = cursor.getString(SUBJECT_COLUMN);
    boolean read = (cursor.getInt(READ_COLUMN) == 1);
    boolean flagged = (cursor.getInt(FLAGGED_COLUMN) == 1);

    menu.setHeaderTitle(subject);

    if (selected.contains(contextMenuUniqueId)) {
        menu.findItem(R.id.select).setVisible(false);
    } else {
        menu.findItem(R.id.deselect).setVisible(false);
    }

    if (read) {
        menu.findItem(R.id.mark_as_read).setVisible(false);
    } else {
        menu.findItem(R.id.mark_as_unread).setVisible(false);
    }

    if (flagged) {
        menu.findItem(R.id.flag).setVisible(false);
    } else {
        menu.findItem(R.id.unflag).setVisible(false);
    }

    if (!messagingController.iscopyCapable(account)) {
        menu.findItem(R.id.copy).setVisible(false);
    }

    if (!messagingController.isMoveCapable(account)) {
        menu.findItem(R.id.move).setVisible(false);
        menu.findItem(R.id.archive).setVisible(false);
        menu.findItem(R.id.spam).setVisible(false);
    }

    if (!account.hasArchiveFolder()) {
        menu.findItem(R.id.archive).setVisible(false);
    }

    if (!account.hasspamFolder()) {
        menu.findItem(R.id.spam).setVisible(false);
    }

}
项目:q-mail    文件:ManageIdentities.java   
@Override
public void onCreateContextMenu(ContextMenu menu,menuInfo);
    menu.setHeaderTitle(R.string.manage_identities_context_menu_title);
    getMenuInflater().inflate(R.menu.manage_identities_context,menu);
}
项目:GitHub    文件:FreeFlowContainer.java   
ContextMenuInfo createContextMenuInfo(View view,int sectionIndex,int positionInSection,long id) {
    return new AbsLayoutContainerContextMenuInfo(view,sectionIndex,positionInSection,id);
}
项目:CCDownload    文件:UploadFragment.java   
public void onCreateContextMenu(ContextMenu menu,ContextMenuInfo menuInfo) {
    menu.setHeaderTitle("操作");
    menu.add(0,"删除");
}

关于MVVM 下 ContextMenu的命令绑定mvvm如何实现绑定的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android – onCreateContextMenu使用ContextMenuInfo的null值调用、android – 像ContextMenu一样获取PopupMenu的上下文、Android 的选项菜单OptionsMenu和上下文菜单ContextMenu的使用案例、android.view.ContextMenu.ContextMenuInfo的实例源码的相关知识,请在本站寻找。

本文标签: