レイアウトの変更中にsetContentViewを複数回使用するのは悪いですか?
一部の人々はそれが悪いと言い、その理由を決して言いません。
ボタンを使用してレイアウトを変更する他のものはありますか?
レイアウトの変更中にsetContentViewを複数回使用するのは悪いですか?
一部の人々はそれが悪いと言い、その理由を決して言いません。
ボタンを使用してレイアウトを変更する他のものはありますか?
Android Documentsを見てみましょう。
アクティビティ コンテンツを明示的なビューに設定します。このビューは、アクティビティのビュー階層に直接配置されます。
そのsetContentView
ため、レイアウトを上書きして、新しいレイアウトに置き換えます。通常、これは onCreate で 1 回だけ行います。理論的にはもっと多くのことを行うことができますが、レイアウト全体を再描画する必要があり、これには時間がかかる場合があります。必要なものに応じて、いくつかの代替手段があります。
あなたの特定のアプリケーションに関しては、ここに私がすることがあります:
Android SDKは、あるアクティビティから別のアクティビティにデータを渡す方法を示しています。次のようなものを使用して、最初のアクティビティから 2 番目のアクティビティが必要とするデータを渡すだけです。
Intent intent=new Intent(...);
intent.putExtra("Album","Some Album")
startActivity(intent);
2 番目のアクティビティでは、次のことを行います。
Intent intent=getIntent();
String albumName=intent.getExtraString("Album");
//Does something with albumName, maybe get a TextView and .setText()
はい、これは悪いことです。レイアウトでアクティビティが膨らむためです。レイアウトに多くのビューがある場合、時間がかかる場合があります。
これを避けるには、すべてのレイアウトを配置し、showNext() と showPrevious() で切り替えるViewAnimatorを使用する必要があります。
<ViewAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ViewAnimator"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout> </RelativeLayout>
<RelativeLayout> </RelativeLayout>
</ViewAnimator>
そしてあなたのコードで:
// Don't forget the setContentView
//
// Load the ViewAnimator and display the first layout
ViewAnimator va = (ViewAnimator) findViewById(R.id.ViewAnimator);
// Switch to the second layout
va.showNext();
// Add another layout at the third position
LinearLayout fooLayout = new LinearLayout(this);
va.addView(fooLayout, 3, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
答えを待っているので、例を示すことはできません。大丈夫、歌詞のアプリがあります(バンドの歌詞が表示されます)、アルバムは新しい活動ですが、多くの活動はしたくないので、曲をレイアウトだけにして、ボタンを押すとビューを変更したいのです
あなたはこれについて間違った方法で行っているようです。UI を変更したい場合Activity
は、Fragment
s の方が適しています。そこには少し学習曲線がありますが、それは優れたアンドロイド設計であり、十分に文書化されています.
さらに、フォーマットとコンテンツを混同しているようです。歌詞を表示している場合は、曲ごとに新しいレイアウトは必要ありません。歌詞を変更して、同じアクティビティに保持するだけです。あなたが行っていることは、アクセスしようとしている各 Web ページ用に新しい Web ブラウザーを作成することに似ています。代わりに、歌詞を保存し、単一のアクティビティ (またはフラグメント) に表示してそれらの歌詞を表示する方法を見つけてください。同じことが各アルバムにも当てはまります。1 つのアクティビティで、アルバム カバーをコーナー (または背景) に表示し、タイトル、リリース日などをテキストとして表示し、その下に曲のリストを表示します。の実際の内容はTextView
変更される可能性がありますが、レイアウトは同じである必要があります。