いくつかの背景
私は9行のTableLayoutを持っています。EditTextビューを1行に並べて正常に並べることができたため、TableLayoutを選択しました。以下に示すように、2行に6つのEditTextがありますが、繰り返しを避けるために、スペースを節約するために6つのうち2つだけを含め、不要な行の一部は正しく表示されていたため削除しました(TextViewのみ)。
問題
私が抱えている問題は、レイアウトのボタンを押した後、すべてのEditTextビューが消えることです。私のボタンはWCFRestfulサービスへの接続を開始しますが、AsyncTaskを使用して開始します。ユーザーを占有するための待機ダイアログがあり、トーストメッセージがポップアップすることがあります。これはすべて正常な動作です。完全に編集テキストは、ボタンを押すとすぐに消えます。
私はグーグルとstackoverflowで検索しました、そして私は同様の問題を見ました、しかし私が持っているのと同じ問題ではありません。非常に奇妙なのは、これは電話でデバッグしているときにのみ発生し、AVDエミュレーターでは発生しないことです。
統計
電話:T-Mobile myTouchQ LG-C800(FYI:最高の電話ではありません)私はそれを応援しました。
電話Androidバージョン:2.3.4(LGは明らかにアップデートを信じていません)
IDE:IntelliJ 11.1
Android SDK:4.0.3
Javaバージョン:1.7
質問
1.別のレイアウトを使用する必要がありますか?
2.なぜこれが起こっているのか手がかりはありますか?
これが私のLayout.xmlの短縮版です:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow android:id="@+id/rowTitleWinningNumbers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="0dip" >
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Winning Numbers" />
</TableRow>
<TableRow android:id="@+id/rowWinningNumbers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="0dip" >
<EditText android:id="@+id/txtLotto1"
android:inputType="text"
android:layout_width="0dp"
android:layout_weight="16.67"
android:editable="false"
android:focusable="false" />
<EditText android:id="@+id/txtLotto2"
android:inputType="text"
android:layout_width="0dp"
android:layout_weight="16.67"
android:editable="false"
android:focusable="false" />
</TableRow>
<TableRow android:id="@+id/rowTitlePlayerNumbers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="0dip" >
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Numbers" />
</TableRow>
<TableRow android:id="@+id/rowPlayerNumbers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="0dip" >
<EditText android:id="@+id/txtPlayer1"
android:inputType="text"
android:layout_width="0dp"
android:layout_weight="16.67"
android:hint="@string/strDefaultNumber" />
<EditText android:id="@+id/txtPlayer2"
android:inputType="text"
android:layout_width="0dp"
android:layout_weight="16.67"
android:hint="@string/strDefaultNumber" />
</TableRow>
<TableRow android:id="@+id/rowPlayerStatus2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center">
<Button android:id="@+id/btnSubmit"
android:text="Did I Win?!"
android:onClick="btnSubmit_onClick" />
<CheckBox android:id="@+id/cbxSavePlayerNumbers"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:lines="2"
android:text="Save my \nNumbers" />
</TableRow>
</TableLayout>
コメントで要求されたコードを編集します
public void btnSubmit_onClick(View v)
{
try
{
clearStatuses();
setLabelText(R.id.lblTimeStamp, DateTime.Today().toString());
savePlayerNumbers();
//This method has to perform its main task asynchronously
getWinningLotteryNumbers();
}
catch(Exception ex)
{
ex.toString();
}
}
private void getWinningLotteryNumbers()
{
try
{
_waitDialog = ProgressDialog.show(MyActivity.this, "Working", "Getting latest Lottery drawing, Please Wait...", true);
getButton(R.id.btnSubmit).setEnabled(false);
String strUrl = getRString(R.string.strWCFServiceURL);
new LottoProxy().execute(strUrl);
}
catch (Exception e)
{
resetControlStates();
}
}
private void clearStatuses()
{
TextView lblStatus = getLabel(R.id.lblStatus);
lblStatus.setText("");
lblStatus.setTextColor(Color.BLACK);
for (int i = 0; i < 6; i++)
resetTextBoxBackResource(getWinningBox(i), getPlayerBox(i));
}
大変お世話になっておりますので、よろしくお願いいたします。これは私の最初の本物のアプリです(ただ遊んでいるのではなく)ので、初心者のミスをした場合は知らせてください。