Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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-View资源在PageViewer中片段上的事件中为空_Android_Null_Resources_Fragment - Fatal编程技术网

Android-View资源在PageViewer中片段上的事件中为空

Android-View资源在PageViewer中片段上的事件中为空,android,null,resources,fragment,Android,Null,Resources,Fragment,我在PageViewer上遇到了一些问题,我在其他问题上搜索了很多,但似乎没有人会遇到我同样的问题,所以我来这里是想问专家我做错了什么 问题是: 我不知道如何在事件中扩大布局,以下是代码: // onCreateView : @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {

我在PageViewer上遇到了一些问题,我在其他问题上搜索了很多,但似乎没有人会遇到我同样的问题,所以我来这里是想问专家我做错了什么

问题是:

我不知道如何在事件中扩大布局,以下是代码:

    // onCreateView :
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
        Bundle savedInstanceState) {

    // fragment not when container null
    if (container == null) {
        return null;
    }
    // inflate view from layout
    View view = (RelativeLayout) inflater.inflate(R.layout.fragment_doorsway_lay, container, false);
    // get button reference
    /*
     * btnWrite = (Button) view.findViewById(R.id.btWrite); // set button
     * listener to trigger activity listener btnWrite.setOnClickListener(new
     * View.OnClickListener() {
     * 
     * @Override public void onClick(View v) {
     * pageListener.onPage1("Page 1 to"); } }); // update text TextView tv =
     * (TextView) view.findViewById(R.id.tvText1); tv.setText(ptext);
     */
    View imageView = view.findViewById(R.id.clickZones);
    imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            View view = (RelativeLayout) inflater.inflate(R.layout.fragment_doorsway_lay, container, false);
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // PRESSED
                try {
                    ImageView newView = ((ImageView) v);
                    Bitmap bitmap = ((BitmapDrawable) newView.getDrawable()).getBitmap();
                    Matrix inverse = new Matrix();
                    newView.getImageMatrix().invert(inverse);
                    float[] touchPoint = new float[] { event.getX(),
                            event.getY() };
                    inverse.mapPoints(touchPoint);
                    int pixel = bitmap.getPixel((int) touchPoint[0],
                            (int) touchPoint[1]);
                    int redValue = Color.red(pixel);
                    int greenValue = Color.green(pixel);
                    if (greenValue == 255) {    

                        //pageListener.onPage1("GREEN");   
                        view.findViewById(R.id.imgChainPressSx).setVisibility(View.VISIBLE);
                        //view.findViewById(R.id.imgChainPressSx).setVisibility(View.VISIBLE);
                    }
                    if (redValue == 255) {
                        //pageListener.onPage1("RED");    
                        view.findViewById(R.id.imgChainPressDx).setVisibility(View.VISIBLE);
                    }
                    // new Connection().execute();
                } catch (Exception e) {
                    Log.e("error", "" + e.getMessage());
                }
                return true; // if you want to handle the touch event
            case MotionEvent.ACTION_UP:
                  // RELEASED
                //view.findViewById(R.id.imgChainPressSx).setVisibility(View.VISIBLE);
                //view.findViewById(R.id.imgChainPressDx).setVisibility(View.VISIBLE);
            }
            return true;
        }
    });
    return view;
}
代码正常工作,btu可能会导致第二次调用:

View view = (RelativeLayout) inflater.inflate(R.layout.fragment_doorsway_lay, container, false);
未引用主视图,即将在该行中可见的视图

view.findViewById(R.id.imgChainPressDx).setVisibility(View.VISIBLE);
将不会显示在GUI中。 …在房地产行业,我不知道

通过使用:

pageListener.onPage1("GREEN");
这是一个在主活动中工作的函数,传递一个字符串并处理它,我可以得到主视图,只询问“findViewById”,而不引用视图,并使用字符串上的if语句管理它,但这不是我想要处理的方式。。。我明白这不是最好的方法

提前感谢您的回复,并向大家致以最良好的问候

Fin3检查以下内容:

  • 您的片段是RegisterFragment的子类吗
  • 标准错误:“碎片”写对了吗

(很抱歉,我不发表评论,但我的声誉太差了…

谢谢你的回复,不管怎样,我已经找到了解决方案。。。它看起来像:

    public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
        Bundle savedInstanceState) {

    // fragment not when container null
    if (container == null) {
        return null;
    }
    // inflate view from layout
    View view = (RelativeLayout) inflater.inflate(R.layout.fragment_doorsway_lay, container, false);
    // get button reference
    /*
     * btnWrite = (Button) view.findViewById(R.id.btWrite); // set button
     * listener to trigger activity listener btnWrite.setOnClickListener(new
     * View.OnClickListener() {
     * 
     * @Override public void onClick(View v) {
     * pageListener.onPage1("Page 1 to"); } }); // update text TextView tv =
     * (TextView) view.findViewById(R.id.tvText1); tv.setText(ptext);
     */
    //View imageView = view.findViewById(R.id.clickZones);
    view.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // PRESSED
                try {
                    ImageView newView = ((ImageView) v.findViewById(R.id.clickZones));
                    Bitmap bitmap = ((BitmapDrawable) newView.getDrawable()).getBitmap();
                    Matrix inverse = new Matrix();
                    newView.getImageMatrix().invert(inverse);
                    float[] touchPoint = new float[] { event.getX(),
                            event.getY() };
                    inverse.mapPoints(touchPoint);
                    int pixel = bitmap.getPixel((int) touchPoint[0],
                            (int) touchPoint[1]);
                    int redValue = Color.red(pixel);
                    int greenValue = Color.green(pixel);
                    if (greenValue == 255) {    

                        //pageListener.onPage1("GREEN");   //Questa funzione finisce nel Main_Activity
                        v.findViewById(R.id.imgChainPressSx).setVisibility(View.VISIBLE);
                        //view.findViewById(R.id.imgChainPressSx).setVisibility(View.VISIBLE);
                    }
                    if (redValue == 255) {
                        //pageListener.onPage1("RED");    //Questa funzione finisce nel Main_Activity
                        v.findViewById(R.id.imgChainPressDx).setVisibility(View.VISIBLE);
                    }
                    // new Connection().execute();
                } catch (Exception e) {
                    Log.e("error", "" + e.getMessage());
                }
                return true; // if you want to handle the touch event
            case MotionEvent.ACTION_UP:
                  // RELEASED
                v.findViewById(R.id.imgChainPressSx).setVisibility(View.INVISIBLE);
                v.findViewById(R.id.imgChainPressDx).setVisibility(View.INVISIBLE);
            }
            return true;
        }
    });
    return view;
}
因此,我没有引用导致onTouch重写中的事件的特定视图,但必须传递整个视图,即pageViewer给定的视图,然后使用方法中的findViewById访问特定视图

希望这能帮助别人

祝你好运

Fin3