onClickListener和setOnTouchListener在React Native中不起作用

时间:2018-01-11 13:14:59

标签: android react-native react-native-android

在我的Android Native代码中,我为我需要在onCreate()中显示的PopUp编写了OnClick Listener。

我想用本机而不是JS写这个。

oc new-project production

弹出窗口显示,但是onClickListner没有被触发,并且setTouchListener也不起作用。我错过了一些文件吗?

2 个答案:

答案 0 :(得分:0)

您已将膨胀的popupView布局的根设置为null,这意味着它可能没有正确的布局框架,这可能会影响触摸交互。

尝试重新排列以便执行此操作:

ViewGroup rootLayout = (ViewGroup) findViewById(android.R.id.content);
View popupView = layoutInflater.inflate(R.layout.pointzipreviewtoolbar, rootLayout, false);

这样popupView将从rootLayout继承layoutparams,但仍然不会附加到该视图,因为最终参数(attachToRoot)为false。看看onClickListener之后是否响应。

您还没有在onCreate中使用setContentView(View view),但是当您从ReactActivity继承时,这可能是正常的,不确定。

答案 1 :(得分:0)

我设法通过将pointzipreviewtoolbar布局元素设置为onClick来解决此问题。在我的情况下,在pointzipreviewtoolbar内部有一个名为preViewCapture的ImageButton。然后我将它设置为OnClickListner并触发它。

  public class MainActivity extends ReactActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
      LayoutInflater layoutInflater =
                    (LayoutInflater)getBaseContext()
                        .getSystemService(LAYOUT_INFLATER_SERVICE);
            View popupView = layoutInflater.inflate(R.layout.pointzipreviewtoolbar,null);
               PopupWindow popupWindow = new PopupWindow(
                    popupView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
             ViewGroup rootLayout = (ViewGroup) findViewById(android.R.id.content);
        ImageButton image = (ImageButton) popupView.findViewById(R.id.preViewCapture);
                image.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.e("Popup was Clicked", "I clicked here");
                    }
                });
    }
    }