0

こんにちは、単純なアプリケーション (メディア プレーヤー) を実行しようとしています。いくつか質問があります。私はすでに 3 つのボタン (menu.xml ファイル内)、MainActivity.java で行われた 3 つのタブを持つメニューを作成しました。私の質問は、そのアイテム (ボタンとタブ) をすべてのアクティビティに適用する方法です。MainActivity のコードをどこにでも貼り付ける必要がありますか? (addTab、オーバーライド機能など)私の意見では、他の方法があるはずです。さらに、タブ1をクリックするとリストビューが下に表示され、タブ2をクリックするとグリッドビューが下に表示されます。3 つのタブに対して 3 つの異なるレイアウトと 3 つの異なるアクティビティを行う必要がありますか? または、すべてのアイテムを含む 1 つのレイアウトと 1 つのアクティビティ ? どのように見えるべきか。

タブ1をクリックすると新しいアクティビティが開始され、その新しいアクティビティのonCreate関数がリストビュー(タブ2グリッドビュー用)で新しいレイアウトをロードしますが、この場合、アクションバーとタブがありません:(からアクションバーとタブコードをコピーしたときMainActivity アプリケーションは起動さえしません :( ただし、前に言ったことですが、そのコードをどこにでも貼り付けなければならないのは奇妙です

私のmenu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_home"
      android:icon="@drawable/navigation_back"
      android:title="@string/action_home"
      android:showAsAction="always" />"
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="always" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
    android:icon="@drawable/ic_action_overflow"
    android:title="@string/action_settings"
    android:showAsAction="always" />

</menu>

MainActivity.java

public class MainActivity extends Activity implements ActionBar.TabListener{
private static final String STATE_SELECTED_NAVIGATION_ITEM =        "selected_navigation_item";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Set up the action bar to show tabs.
    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // For each of the sections in the app, add a tab to the action bar.
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section_music)
        .setTabListener(this));
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section_video)
        .setTabListener(this));
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section_photo)
        .setTabListener(this));
}
  @Override
  public void onRestoreInstanceState(Bundle savedInstanceState) {
    // Restore the previously serialized current tab position.
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
      getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
    }
  }

  @Override
  public void onSaveInstanceState(Bundle outState) {
    // Serialize the current tab position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
        .getSelectedNavigationIndex());
  }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.action_home:
            Intent intent = new Intent(this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        case R.id.action_search:
            //openSearch();
            return true;
        case R.id.action_settings:
            //openSettings();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
  @Override
  public void onTabSelected(ActionBar.Tab tab,
      FragmentTransaction fragmentTransaction) {
      Intent intent = new Intent(this, PlayerListViewActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      startActivity(intent);
  }

  @Override
  public void onTabUnselected(ActionBar.Tab tab,
      FragmentTransaction fragmentTransaction) {
  }

  @Override
  public void onTabReselected(ActionBar.Tab tab,
      FragmentTransaction fragmentTransaction) {
  }

/*
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));
    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            String[] tekst = {"Music", "Video", "Settings", "Exit"};
            Toast.makeText(MainActivity.this, "" + tekst[position], Toast.LENGTH_SHORT).show();
            if(position == 3)
            {
                finish();
                System.exit(0);
            }
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}*/

}
4

1 に答える 1

0

コードを再度記述する必要はありません。2 番目のアクティビティをアクティビティではなく Mainactivity に拡張します。

Public class SecondActivity extends Mainactivity simple :) お役に立てば幸いです

于 2013-08-15T09:28:36.240 に答える