Java setOnClickListener在Android中不工作
我试图在Java setOnClickListener在Android中不工作,java,android,android-fragments,textview,onclicklistener,Java,Android,Android Fragments,Textview,Onclicklistener,我试图在片段中的编辑文本视图上应用设置ClickListener,由于某种原因,它不起作用,当我单击编辑文本时,侦听器中的代码不会执行 片段xml: 片段代码: @覆盖 创建视图时的公共视图(@NonNull LayoutInflater充气机,@null可查看组容器, @可为空的捆绑包savedInstanceState){ 视图=充气机。充气(R.layout.add\u payment\u fragment,container,false); view.findViewById(R.i
片段中的编辑文本
视图
上应用设置ClickListener
,由于某种原因,它不起作用,当我单击编辑文本
时,侦听器中的代码不会执行
片段xml:
片段代码:
@覆盖
创建视图时的公共视图(@NonNull LayoutInflater充气机,@null可查看组容器,
@可为空的捆绑包savedInstanceState){
视图=充气机。充气(R.layout.add\u payment\u fragment,container,false);
view.findViewById(R.id.add_pay_time).setOnClickListener(newview.OnClickListener()){
@凌驾
公共void onClick(视图v){
Toast.makeText(getContext(),“aaaa”,Toast.LENGTH_LONG.show();
}
});
返回视图;
}
编辑文本需要焦点
调用onClick()
解决方案1
设置侦听器时请求焦点:
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
}
});
editText.requestFocus(); //request focus
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction())
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
return false;
}
});
解决方案2
触摸式监听设置:
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
}
});
editText.requestFocus(); //request focus
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction())
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
return false;
}
});
解决方案3
您可以同时使用onClickListener
和onFocusChangeListener
:
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showToast();//call your method
}
});
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
showToast();//call your method
}
});
编辑文本需要focus
调用onClick()
解决方案1
设置侦听器时请求焦点:
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
}
});
editText.requestFocus(); //request focus
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction())
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
return false;
}
});
解决方案2
触摸式监听设置:
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
}
});
editText.requestFocus(); //request focus
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction())
Toast.makeText(getContext(), "aaaa", Toast.LENGTH_LONG).show();
return false;
}
});
解决方案3
您可以同时使用onClickListener
和onFocusChangeListener
:
EditText editText = view.findViewById(R.id.add_pay_time);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showToast();//call your method
}
});
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
showToast();//call your method
}
});
用getActivity().getApplicationContext()代替用getActivity().getApplicationContext()代替我刚试过,恐怕不行。还有其他想法吗?谢谢你花时间看这个。我两个都试过了,它们都有效。试着重写这个片段的全部代码。我刚试过,恐怕不行。还有其他想法吗?谢谢你花时间看这个。我两个都试过了,它们都有效。尝试重写此片段的全部代码。