0

上部に2つのボタンがあるアクティビティを作成しました。1つのボタンで「SMSログ」を表示し、2番目のボタンで「通話ログ」を表示します。

「SMSログ」ボタンをクリックすると、SMSログを表示するためのテキストビューと線形レイアウトを動的に作成しています。

[通話履歴]をクリックすると、通話履歴を表示するために別のテキストビューと線形レイアウトを動的に作成しています。

しかし、問題は、「smsログ」ボタンをクリックしてから「呼び出しログ」ボタンをクリックすると、以前に作成された線形レイアウトが削除されず、両方(以前のレイアウトと現在のレイアウト)が同時に表示されることです。

しかし、2番目のボタンをクリックすると、以前のレイアウトを削除する必要があります。

以前のビューグループまたはレイアウトを削除するには、どの関数を使用する必要がありますか。私のクラスファイルを読む必要があるかどうか教えてください。

編集:

これは私のアクティビティのコードです、

public class General extends Activity
{
    String phone, message;
    TextView Logs;
    View layout, callLayout;
    TextView data, callData, line, callLine;
    Button smsLog, callLog;
    LinearLayout ll, callll;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.general_main);
        Logs = (TextView)findViewById(R.id.Logs);
        layout = findViewById(R.id.layout);
        callLayout = findViewById(R.id.layout);
        smsLog = (Button)findViewById(R.id.smsLogs);
        callLog = (Button)findViewById(R.id.callLogs);
        smsLog.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) 
            {
                callLayout.setVisibility(View.GONE);
                       ll = new LinearLayout(getApplicationContext());
                       ll.setOrientation(LinearLayout.VERTICAL);
                       data = new TextView(getApplicationContext());
                        data.setText("First Line");
                        data.setTextColor(Color.YELLOW);
                        line = new TextView(getApplicationContext());
                        line.setText("Second Line");
                        ((ViewGroup) ll).addView(data);
                        ((ViewGroup) layout).addView(line);
                        ((ViewGroup) layout).addView(ll);
            }
        });


        callLog.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v) 
            {
                layout.setVisibility(View.GONE);
                        callll = new LinearLayout(getApplicationContext());
                        callll.setOrientation(LinearLayout.VERTICAL);
                         callData = new TextView(getApplicationContext());
                            callLine = new TextView(getApplicationContext());
                        callData.setText("Third Line");
                        callLine.setText("Fourth Line");
                        ((ViewGroup) callll).addView(callData);
                        ((ViewGroup) callLayout).addView(callLine);
                        ((ViewGroup) callLayout).addView(callll);
            }
        });
    }
}

余分なコードを削除して、わかりやすくしました。

4

2 に答える 2

1

FrameLayoutを使用して問題を解決できます。
ただし、タブビューを使用することをお勧めします。タブ付きアプリケーションを開発する方法を示すリンクは次のとおりです

幸運を

于 2012-10-24T12:28:31.463 に答える
0

を実装できますTabView

ただし、現在の設定では、一方のビューグループの表示をに変更しGONE、もう一方をに変更するだけVISIBLEです。

GONEビューが非表示になり、スペースを占有しなくなります。

質問に追加されたコードに基づいて編集する

layoutとの両方callLayoutが同じXMLビューを使用しています。に2つの同一のビューを実装し、xml1つを表示し、もう1つを表示しないようにします。このように設定しlayoutたり、callLayout可視性を設定したりするGONEと、2つの異なるものが同じではなくなります。したがって、次のonClick()ようなものになります。

のためにsmsLog

layout.setVisibility(View.GONE);
callLayout.setVisibility(View.VISIBLE);

のためにcallLog

callLayout.setVisibility(View.GONE);
callLayout.setVisibility(View.VISIBLE);
于 2012-10-24T12:24:14.030 に答える