这是我的第一篇文章。 我有管理活动的问题。我有我的主要活动,它启动其他活动包含一些EditTexts。这里是启动代码:整理活动首先清除EditTexts,然后才做它应该做的事
Intent myIntent = new Intent(ActualClass.this, NextClass.class);
startActivity(myIntent);
我对新推出的活动和一些按钮有几个EditTexts。其中一个按钮让我回到主要活动。在它的OnTouchEvent上,我运行简单的finish();这一切似乎很简单,应该工作得很好,但是当我点击按钮应该让我回到我的主要活动,它首先清除我的EditTexts。当我第二次点击它时,它终于让我回到我的主要活动。我应该怎么做,以防止清除EditTexts并在第一次点击后返回到我的主要活动?我非常感谢你的帮助。
对不起,我添加了更多的代码。因此,这里是其推出的第二个活动的听众,将一个有EditTexts:
public boolean onTouch(View v, MotionEvent me) {
switch(v.getId()){
case R.id.buttonForward:
Intent myIntent = new Intent(ActualClass.this, NextClass.class);
startActivity(myIntent);
break;
default:
break;
}
return false;
}
而关于第二项活动,我的问题似乎发生,按钮听者看起来是这样的:
buttonBack.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
finish();
return false;
}
});
问题是:当我第一次点击第二个活动的后退按钮时,它不会让我回到我的主要活动 - 它清除所有活动的EditTexts并将焦点设置在第一个元素上。当我第二次点击按钮时,它终于让我回到主要活动。
我提供了NextClass类的完整代码,它带有EditTexts。
public class NextClass extends Activity implements OnTouchListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.nextclasslayout);
final EditText firstEditText = (EditText) findViewById(R.id.firstEditTextName);
final EditText secondEditText = (EditText) findViewById(R.id.secondEditTextName);
ImageButton buttonBack = (ImageButton) findViewById(R.id.imageButtonBack);
buttonBack.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
finish();
return true;
}
});
}
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
return false;
}
}
人们可能会更好地帮助您发布复制问题所需的完整小代码。正如你所描述的,我从来没有遇到过问题。 – 2011-04-27 18:44:46
我很难理解你在说什么。你是否想要按两次按钮返回,或只是一次?另外,如果你可以提供更多的代码(也许是你的Button的OnTouchEvent类),那么帮助你更容易。 – 2011-04-27 18:47:26
你有没有试过从onTouch返回true?错误意味着你没有自己处理事件,触摸事件在视图中传播 – Spidy 2011-04-27 19:07:46