私はAndroid開発で新しく、ヘッダー、ボディー、フッターを持つアプリケーションを作成したいと思っていました。フッターのボタンの1つをクリックすると、レイアウトが本体に読み込まれます。私はhereと記載されているような何らかの「マスターページ」を使用しました。 ボタンを押すとnew_exercise
レイアウトもexercises
レイアウトもロードされません。どうして?たぶんこのすべての代わりに私はどのような種類のタブを使用する必要がありますか?レイアウトを膨らませることができず、新しいアクティビティを作成する必要がありますか?Androidで別のレイアウトにレイアウトを拡張する理由
ここBaseActivityとNewExercise活動のコード:
あなたのコードが書かれている方法public class BaseActivity extends Activity{
LinearLayout linBaseBody;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.base_layout);
linBaseBody = (LinearLayout)findViewById(R.id.base_body);
initButtons();
}
@Override
public void setContentView(int id) {
LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(id, linBaseBody);
}
private void initButtons()
{
Button btn1 = (Button) findViewById(R.id.newEx);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
setContentView(R.layout.new_exercise);
}
});
Button btn2 = (Button) findViewById(R.id.showAllEx);
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
setContentView(R.layout.exercises);
}
});
}
public class NewExercise extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.new_exercise);
}
}
public class Exercises extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exercises);
}
}
クリックごとに新しいアクティビティを作成することはあまり重すぎないでしょうか、それとも気にする必要がありますか? – theateist
これは、それぞれのアクティビティで何をする予定であるかによって異なります。しかし、すべての可能性のあるフードでは、いいえ、それはGCで重すぎることはありません、またはより正確に、それはユーザーの経験を妨げるべきではありません。 – AedonEtLIRA
私がしたかったのは、それぞれのタブの機能が異なるが、すべてのタブに自分の投稿に記載されているものと同じヘッダが付いているような、ある種のタブです(私は今考えています)。したがって、1つのアクティビティ内でレイアウトを膨張させる代わりに、 'TabHost'(または何か他のもの)を使用する方が良いでしょうか? – theateist