ViewSwitcher 不会转到上一个视图
ViewSwitcher not going to previous view
您好,我正在尝试使用 viewswitcher
在 TextView
和 EditText
之间来回切换。我的视图从 textview
切换到 edittext
。但不会切换回来。这是我的 xml
:
<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/noteItemVS"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<TextView
android:id="@+id/noteItemTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:text="textview"
android:textAlignment="center" />
<EditText
android:id="@+id/noteItemEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="edittext"
android:textAlignment="center" />
</ViewSwitcher>
我的切换代码是:
protected void switchViews(NoteItem note) {
ViewSwitcher switcher = (ViewSwitcher) context.findViewById(R.id.noteItemVS);
View switchCheck = switcher.getCurrentView();
if (switchCheck instanceof EditText) {
EditText l = (EditText)switchCheck ;
String x = l.getText().toString();
Log.e("tree",x);
if (!x.isEmpty()) {
switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.noteItemTextView);
myTV.setText(x);
}
}
; if (switchCheck instanceof TextView) {
TextView l = (TextView) switchCheck;
String x = l.getText().toString();
switcher.showNext();
EditText myEditText = (EditText) switcher.findViewById(R.id.noteItemEditText);
myEditText.setText(x);
}
}
通过摆脱视图切换器,我能够解决问题。只需使用 View.Gone 和 View.Visibile
protected void switchViews(NoteItem note) {
if (context.findViewById(R.id.noteItemTextView).getVisibility()==View.GONE) {
EditText editText = (EditText) context.findViewById(R.id.noteItemEditText);
String x = editText.getText().toString();
editText.setVisibility(View.GONE);
TextView textView = (TextView) context.findViewById(R.id.noteItemTextView);
textView.setVisibility(View.VISIBLE);
} else {
TextView textView = (TextView) context.findViewById(R.id.noteItemTextView);
String x = textView.getText().toString();
textView.setVisibility(View.GONE);
EditText editText = (EditText) context.findViewById(R.id.noteItemEditText);
editText.setText(x);
editText.setVisibility(View.VISIBLE);
}
}
发生这种情况是因为解释器正在通过两个 if 语句,默认情况下,后一个语句会覆盖前一个语句的值。
试试下面的代码,它肯定会起作用。
protected void switchViews() {
ViewSwitcher switcher = (ViewSwitcher)findViewById(R.id.noteItemVS);
View switchCheck = switcher.getCurrentView();
if (switchCheck instanceof EditText) {
EditText l = (EditText)switchCheck;
String x = l.getText().toString();
Log.e("tree",x);
if (!x.isEmpty()) {
switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.noteItemTextView);
myTV.setText(x);
}
}else{
TextView l = (TextView) switchCheck;
String x = l.getText().toString();
switcher.showNext();
EditText myEditText = (EditText) switcher.findViewById(R.id.noteItemEditText);
myEditText.setText(x);
}
}
您好,我正在尝试使用 viewswitcher
在 TextView
和 EditText
之间来回切换。我的视图从 textview
切换到 edittext
。但不会切换回来。这是我的 xml
:
<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/noteItemVS"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<TextView
android:id="@+id/noteItemTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:text="textview"
android:textAlignment="center" />
<EditText
android:id="@+id/noteItemEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="edittext"
android:textAlignment="center" />
</ViewSwitcher>
我的切换代码是:
protected void switchViews(NoteItem note) {
ViewSwitcher switcher = (ViewSwitcher) context.findViewById(R.id.noteItemVS);
View switchCheck = switcher.getCurrentView();
if (switchCheck instanceof EditText) {
EditText l = (EditText)switchCheck ;
String x = l.getText().toString();
Log.e("tree",x);
if (!x.isEmpty()) {
switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.noteItemTextView);
myTV.setText(x);
}
}
; if (switchCheck instanceof TextView) {
TextView l = (TextView) switchCheck;
String x = l.getText().toString();
switcher.showNext();
EditText myEditText = (EditText) switcher.findViewById(R.id.noteItemEditText);
myEditText.setText(x);
}
}
通过摆脱视图切换器,我能够解决问题。只需使用 View.Gone 和 View.Visibile
protected void switchViews(NoteItem note) {
if (context.findViewById(R.id.noteItemTextView).getVisibility()==View.GONE) {
EditText editText = (EditText) context.findViewById(R.id.noteItemEditText);
String x = editText.getText().toString();
editText.setVisibility(View.GONE);
TextView textView = (TextView) context.findViewById(R.id.noteItemTextView);
textView.setVisibility(View.VISIBLE);
} else {
TextView textView = (TextView) context.findViewById(R.id.noteItemTextView);
String x = textView.getText().toString();
textView.setVisibility(View.GONE);
EditText editText = (EditText) context.findViewById(R.id.noteItemEditText);
editText.setText(x);
editText.setVisibility(View.VISIBLE);
}
}
发生这种情况是因为解释器正在通过两个 if 语句,默认情况下,后一个语句会覆盖前一个语句的值。 试试下面的代码,它肯定会起作用。
protected void switchViews() {
ViewSwitcher switcher = (ViewSwitcher)findViewById(R.id.noteItemVS);
View switchCheck = switcher.getCurrentView();
if (switchCheck instanceof EditText) {
EditText l = (EditText)switchCheck;
String x = l.getText().toString();
Log.e("tree",x);
if (!x.isEmpty()) {
switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.noteItemTextView);
myTV.setText(x);
}
}else{
TextView l = (TextView) switchCheck;
String x = l.getText().toString();
switcher.showNext();
EditText myEditText = (EditText) switcher.findViewById(R.id.noteItemEditText);
myEditText.setText(x);
}
}