0

ユーザーが Android 画面を長押しすると、トーストを表示しようとしましたが、何も表示されません。エラーはどこにありますか?

public class MainActivity extends Activity {
  Handler handler = new Handler(); 

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

Runnable mLongPressed = new Runnable() { 
    public void run() { 
        Toast.makeText(getBaseContext(), 
                "Long press",
                Toast.LENGTH_LONG).show();
    }   
};

@Override
public boolean onTouchEvent(MotionEvent event){
    if(event.getAction() == MotionEvent.ACTION_DOWN)
        Toast.makeText(getBaseContext(), 
                " touch ",
                Toast.LENGTH_LONG).show();
        handler.postDelayed(mLongPressed, 1000);
    if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP))
        handler.removeCallbacks(mLongPressed);
    return super.onTouchEvent(event);
}
4

2 に答える 2

1

次のように、長押しを判断するには、GestureDetectorを使用する必要があります。

final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
        public void onLongPress(MotionEvent e) {
            Toast.makeText(getBaseContext(), "Long press", Toast.LENGTH_LONG).show();
        }
    });

    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    };
于 2013-05-08T12:06:43.650 に答える
0

スニペット:

public class MainActivity extends Activity implements OnLongClickListener {


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

    View yourView = (View) findViewById(R.id.longclickview);
    yourView.setOnLongClickListener(this);
}

@Override
public boolean onLongClick(View v) {
    Toast.makeText(getBaseContext(), 
            "Long press",
            Toast.LENGTH_LONG).show();
    return false;
}
于 2013-05-08T12:03:38.720 に答える