1

我有一个 Activty,它在按下信息按钮后显示。现在我想在用户触摸屏幕时关闭/销毁活动,以便用户可以再次回到主活动,而无需按下设备的后退按钮。代码看起来如何。

我试过这个,但它没有效果:

if(onTouchEvent(null)){
        finish();
}

谢谢。


编辑:

这是我的全部代码:

public class InfoDialog extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.info_dialog); }

我使用这个类只是为了在 Theme.Dialog 的 android 样式中显示有关应用程序的简短信息但是,我想添加一个功能,以在按下触摸屏时销毁/关闭此活动,这样就没有需要按返回键。

4

3 回答 3

1

您应该像这样覆盖 onTouch(View v, MotionEvent event) :

onTouch(View v, MotionEvent event){
   switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:
         finish();
   }
}
于 2012-09-13T08:16:21.540 回答
1

试试这个...

LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayoutId);

mainLayout.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                int eid = event.getAction();
                switch (eid) {
                case MotionEvent.ACTION_DOWN:
                    finish();
                    break;
                }
                return true;
            }
        });
于 2012-09-13T09:05:05.577 回答
0

为显示您的信息的视图提供一个 ID。然后在该视图上设置一个 onTouch 侦听器,如果使用活动则完成活动,或者如果使用可见性则使其不可见。

main = (RelativeLayout) findViewById(R.id.main);
main.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                        case MotionEvent.ACTION_DOWN:
                finish();
            }
        }

或者

info = (RelativeLayout) findViewById(R.id.info);

info = (RelativeLayout) findViewById(R.id.info);
info.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                         case MotionEvent.ACTION_DOWN:
                info.setVisibilty(View.GONE);
            }
        }
于 2012-09-13T08:18:46.217 回答