我有一个奇怪的fragments
和editText
视图设置,基本上我需要在每次特定editText
视图为clicked
时删除该片段。
这有效,但只有大约80%的时间。
另外20%的失败时间,如果再次点击它,它会100%隐藏。
就像第一次点击它一样,它没有足够的时间在键盘弹出之前做出反应并隐藏片段。
我的xml将Clickable设置为true,onClick设置为隐藏。
我的java在这里:
public void hide(View view) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
try {
transaction.remove(timerFragment);
transaction.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
有什么想法吗?
答案 0 :(得分:1)
我最终在另一个主题中解决了问题。我需要一个onTouch方法而不是onClick。看这里:onClick event is not triggering | Android
答案 1 :(得分:0)
我希望它对你有所帮助。
试试这个..
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText ed1=(EditText)findViewById(R.id.editText1);
final EditText ed2=(EditText)findViewById(R.id.editText2);
ed1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
call();
return false;
}
});
ed2.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
cal();
return false;
}
});
}
public void call() {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Hi", Toast.LENGTH_SHORT).show();
//insert your codes here..
}
public void cal() {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Hello", Toast.LENGTH_SHORT).show();
//insert your codes here..
}
我的xml文件是:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<requestFocus />
</EditText>
答案 2 :(得分:0)
在我看来,你有两个潜在的问题,应该分解你的努力,一次解决一个问题。第一项任务是,验证您的点击处理程序100%的工作时间。完成后,请查看验证您的片段代码是否100%可靠。
关于片段:
我之前没有看到有人将FragmentTransaction放入try
块,并且您调用的函数不会抛出任何内容(根据文档)。您的catch
区块是否可以访问?
您的方法名称为hide()
。是否足以显示和隐藏您的片段,而不是添加或删除它?