我正在尝试在Android中运行程序,以便在用户按下全部清除按钮时清除EditText字段中的所有文本。下面是我到目前为止的代码,目前它没有按计划运行。我是java和adroid app开发的新手。如果可能的话,请通过示例告诉我如何解决这个问题。非常感谢提前。
CEMMainActivity.java
public class CEMMainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) { // runs every time the app runs
super.onCreate(savedInstanceState); // loads saved instant state
setContentView(R.layout.activity_cemmain);//sets what the app will look like based on the graphical design created
if (savedInstanceState == null) {// action if app does not start up correctly
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
// Clears all text in EditText fields
Button clearalltext = (Button) findViewById(R.id.cleartext);
clearalltext.setOnClickListener(new OnClickListener() {
public void onClick(View c) {
ViewGroup group = (ViewGroup) findViewById(R.id.cleartext);
clearText(group);
});
}
private void clearText((ViewGroup)group); {
// TODO Auto-generated method stub
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
ViewGroup view;
if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
clearText((ViewGroup)group);
}
}
}
fragment_cemmain.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="clinical.equipment.monitor.CEMMainActivity$PlaceholderFragment" >
.....
<Button
android:id="@+id/cleartext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/findequip"
android:layout_marginTop="56dp"
android:onClick="cleartext"
android:text="@string/cleartext" />
....
</RelativeLayout>
答案 0 :(得分:0)
(ViewGroup) findViewById(R.id.cleartext);
我认为明文是按钮而不是视图组,你可以使用onclick参数c的getParent()方法,如 c.getParent(),返回ViewGroup Relative Layout然后你可以获取所有将由您在clearText方法中定义的孩子......
或者你也可以给relativelayout提供id
// Clears all text in EditText fields
Button clearalltext = (Button) findViewById(R.id.cleartext);
clearalltext.setOnClickListener(new OnClickListener() {
public void onClick(View c) {
ViewGroup group = (ViewGroup) c.getParent();
clearText(group);
});
}
答案 1 :(得分:0)
我认为你的问题是将按钮ID传递给视图组,因此它的子计数将为零。请将父布局ID传递给视图组。对以下内容进行更改
ViewGroup group = (ViewGroup) findViewById(R.id.cleartext);
用您的父布局ID替换明文。即RelativeLayout id
答案 2 :(得分:0)
ViewGroup group = (ViewGroup) findViewById(R.id.cleartext);
它将访问按钮,只会清除按钮的文本。为RelativeLayout分配一个id,并用它来清除所有孩子的文本。