【问题标题】:Sending argument to another method将参数发送到另一个方法
【发布时间】:2017-06-24 12:45:27
【问题描述】:

我想将 bookListView LongClickListener 中的 file 变量发送到 QuickAction 代码 中的 switch 语句。我该怎么做?

BookList查看代码:

bookListView.setOnItemLongClickListener(
    new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            String book = String.valueOf(parent.getItemAtPosition(position));
            File file = new File (path + "/" + book);
            mQuickAction.show(view);
            return true;
        }
    }
);

快速操作代码:

ActionItem editItem = new ActionItem(ID_EDIT, "Edit", getResources().getDrawable(R.drawable.edit_icon));
ActionItem deleteItem = new ActionItem(ID_DELETE, "Delete", getResources().getDrawable(R.drawable.delete_icon));

final QuickAction mQuickAction  = new QuickAction(this);
mQuickAction.addActionItem(editItem);
mQuickAction.addActionItem(deleteItem);

mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
    @Override
    public void onItemClick(QuickAction quickAction, int pos, int actionId) {
        ActionItem actionItem = quickAction.getActionItem(pos);

        switch (actionId) {
            case ID_EDIT:
                Toast.makeText(MainActivity.this, "go", Toast.LENGTH_SHORT).show();
                break;
            case ID_DELETE:
                 Toast.makeText(MainActivity.this, "Delete book", Toast.LENGTH_SHORT).show();
                 break;
            }
        }
    });

    mQuickAction.setOnDismissListener(new QuickAction.OnDismissListener() {
        @Override
        public void onDismiss() {
            //close quickaction
        }
    });

   ...
});

【问题讨论】:

    标签: java variables methods arguments


    【解决方案1】:

    您可以使用负责管理文件的对象,例如:

    public class FileManager {
    
        private File file;
    
        public void setFile(File file) {
            this.file = file;
        }
    
        public File getFile() {
            return this.file;
        }
    }
    

    FileManager 可以在方法之间共享:

    FileManager fileManager = new FileManager();
    
    bookListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            String book = String.valueOf(parent.getItemAtPosition(position));
            File file = new File (path + "/" + book);
            fileManager.setFile(file);
            mQuickAction.show(view);
            return true;
        }
    });
    

    你可以调用 get 方法:

    mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
        @Override
        public void onItemClick(QuickAction quickAction, int pos, int actionId) {
            ActionItem actionItem = quickAction.getActionItem(pos);
            File file = fileManager.getFile();
    
            switch (actionId) {
                case ID_EDIT:
                    Toast.makeText(MainActivity.this, "go", Toast.LENGTH_SHORT).show();
                    break;
                case ID_DELETE:
                    Toast.makeText(MainActivity.this, "Delete book", Toast.LENGTH_SHORT).show();
                    break;
                }
            }
        });
    
        ...
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多