我将以下行(从pskink post 3-2-14)插入到我的弹出式Android活动文件中。这是在已经工作的项目的onCreate()
中。 Android Studio希望我将以下3声明为局部变量,参数或字段。 3是:mPopup
,mCurrentX
和mCurrentY
。如果我只是做试错法,一次尝试一个,那可能有用,是吗?或者有关如何判断使用哪些的想法?
以下是代码:
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);
}
});
答案 0 :(得分:0)
按照惯例,以“m”开头的变量是成员变量(类字段),而不是局部变量。在这种情况下看起来是正确的,因为它们需要在这些方法之外具有生命周期。