Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在此“中声明哪种类型的变量”;“可拖动弹出窗口”;密码?_Android_Variables_Android Activity_Draggable_Declare - Fatal编程技术网

Android 在此“中声明哪种类型的变量”;“可拖动弹出窗口”;密码?

Android 在此“中声明哪种类型的变量”;“可拖动弹出窗口”;密码?,android,variables,android-activity,draggable,declare,Android,Variables,Android Activity,Draggable,Declare,我在弹出的Android活动文件中插入以下行(来自pskink post 3-2-14)。这将被放置在已在工作的项目中的onCreate()中。AndroidStudio希望我将以下3项声明为局部变量、参数或字段。这三个是:mPopup、mCurrentX和mCurrentY。如果我只是尝试错误的方法,一次尝试一个,那可能会奏效,嗯?或者关于如何判断使用哪一个的想法 如果我选择“local”,则mPopup将更改为“PopupWindow” 如果我选择“参数”,AS会询问重构 代码如下: fin

我在弹出的Android活动文件中插入以下行(来自pskink post 3-2-14)。这将被放置在已在工作的项目中的
onCreate()
中。AndroidStudio希望我将以下3项声明为局部变量、参数或字段。这三个是:
mPopup
mCurrentX
mCurrentY
。如果我只是尝试错误的方法,一次尝试一个,那可能会奏效,嗯?或者关于如何判断使用哪一个的想法

  • 如果我选择“local”,则mPopup将更改为“PopupWindow”
  • 如果我选择“参数”,AS会询问重构
  • 代码如下:

    final View cv = new View(this);
    setContentView(cv);
    
    TextView tv = new TextView(this);
    tv.setBackgroundColor(0xffeeeeee);
    tv.setTextColor(0xff000000);
    tv.setTextSize(24);
    tv.setText("click me\nthen drag me");
    tv.setPadding(8, 8, 8, 8);
    mPopup = new PopupWindow(tv, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    OnTouchListener otl = new OnTouchListener() {
        private float mDx;
        private float mDy;
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();
            if (action == MotionEvent.ACTION_DOWN) {
                mDx = mCurrentX - event.getRawX();
                mDy = mCurrentY - event.getRawY();
            } else
            if (action == MotionEvent.ACTION_MOVE) {
                mCurrentX = (int) (event.getRawX() + mDx);
                mCurrentY = (int) (event.getRawY() + mDy);
                mPopup.update(mCurrentX, mCurrentY, -1, -1);
            }
            return true;
        }
    };
    tv.setOnTouchListener(otl);
    
    mCurrentX = 20;
    mCurrentY = 50;
    cv.post(new Runnable() {
        @Override
        public void run() {
            mPopup.showAtLocation(cv, Gravity.NO_GRAVITY, mCurrentX, mCurrentY);
        }
    });
    

    按照惯例,以“m”开头的变量是成员变量(类字段),而不是局部变量。在这种情况下,这看起来是正确的,因为它们需要在这些方法之外有一个生命周期