Android-View资源在PageViewer中片段上的事件中为空
我在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) {
// 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