1

Я новичок в Android.Шаблон подробного шаблона Android и ActionBar

У меня есть вопрос о шаблоне MasterDetail.

У меня есть деятельность по управлению логином пользователя. Когда данные входа верны, мне нужно показать шаблон основной детали.

Итак, в Android Studio я добавил операцию «Мастер/Детальный поток» в моем проекте.

В моем validateLogin() методе, после того, как регистрационные данные являются правильными, я должен показать Activity сек в Master/Detail потока и я использую этот код:

Intent myIntent = new Intent(Login.this, MasterDetailListActivity.class); 
startActivity(myIntent); 
finish(); 

Я не безопасно, если этот код правильно, и я бы показал также actionBar (на самом деле я могу видеть ActionBar только в подробном виде).

****** ******** EDIT

Это код моего списка деятельности

public class BusinessPartnerListActivity extends FragmentActivity 
     implements BusinessPartnerListFragment.Callbacks { 

    /** 
    * Whether or not the activity is in two-pane mode, i.e. running on a tablet 
    * device. 
    */ 
    private boolean mTwoPane; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_businesspartner_list); 

     if (findViewById(R.id.businesspartner_detail_container) != null) { 
      // The detail container view will be present only in the 
      // large-screen layouts (res/values-large and 
      // res/values-sw600dp). If this view is present, then the 
      // activity should be in two-pane mode. 
      mTwoPane = true; 

      // In two-pane mode, list items should be given the 
      // 'activated' state when touched. 
      ((BusinessPartnerListFragment) getSupportFragmentManager() 
        .findFragmentById(R.id.businesspartner_list)) 
        .setActivateOnItemClick(true); 
     } 

     // TODO: If exposing deep links into your app, handle intents here. 
    } 

    /** 
    * Callback method from {@link BusinessPartnerListFragment.Callbacks} 
    * indicating that the item with the given ID was selected. 
    */ 
    @Override 
    public void onItemSelected(String id) { 
     if (mTwoPane) { 
      // In two-pane mode, show the detail view in this activity by 
      // adding or replacing the detail fragment using a 
      // fragment transaction. 
      Bundle arguments = new Bundle(); 
      arguments.putString(BusinessPartnerDetailFragment.ARG_ITEM_ID, id); 
      BusinessPartnerDetailFragment fragment = new BusinessPartnerDetailFragment(); 
      fragment.setArguments(arguments); 
      getSupportFragmentManager().beginTransaction() 
        .replace(R.id.businesspartner_detail_container, fragment) 
        .commit(); 

     } else { 
      // In single-pane mode, simply start the detail activity 
      // for the selected item ID. 
      Intent detailIntent = new Intent(this, BusinessPartnerDetailActivity.class); 
      detailIntent.putExtra(BusinessPartnerDetailFragment.ARG_ITEM_ID, id); 
      startActivity(detailIntent); 
     } 
    } 
} 

... и подробно деятельности .. .

public class BusinessPartnerDetailActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_businesspartner_detail); 

     // Show the Up button in the action bar. 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     // savedInstanceState is non-null when there is fragment state 
     // saved from previous configurations of this activity 
     // (e.g. when rotating the screen from portrait to landscape). 
     // In this case, the fragment will automatically be re-added 
     // to its container so we don't need to manually add it. 
     // For more information, see the Fragments API guide at: 
     // 
     // http://developer.android.com/guide/components/fragments.html 
     // 
     if (savedInstanceState == null) { 
      // Create the detail fragment and add it to the activity 
      // using a fragment transaction. 
      Bundle arguments = new Bundle(); 
      arguments.putString(BusinessPartnerDetailFragment.ARG_ITEM_ID, 
        getIntent().getStringExtra(BusinessPartnerDetailFragment.ARG_ITEM_ID)); 
      BusinessPartnerDetailFragment fragment = new BusinessPartnerDetailFragment(); 
      fragment.setArguments(arguments); 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.businesspartner_detail_container, fragment) 
        .commit(); 
     } 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == android.R.id.home) { 
      // This ID represents the Home or Up button. In the case of this 
      // activity, the Up button is shown. Use NavUtils to allow users 
      // to navigate up one level in the application structure. For 
      // more details, see the Navigation pattern on Android Design: 
      // 
      // http://developer.android.com/design/patterns/navigation.html#up-vs-back 
      // 
      NavUtils.navigateUpTo(this, new Intent(this, BusinessPartnerListActivity.class)); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

***** EDIT (Видео) ****** видео выпуска на ActionBar анимации

https://www.dropbox.com/s/af07ovbv36pn44x/actionbab_issue.mov?dl=0

+0

Вы не должны называть 'finish()' – JonasCz

+0

@JonasCz Хорошо, как я могу показать ActionBar в действии List (Master)? (на самом деле я могу видеть ActionBar только в подробном виде). – Safari

ответ

3

Вам необходимо продлить от ActionBarActivity вместо FragmentActivity. Измените определение активности списка просмотров на:

public class BusinessPartnerListActivity extends ActionBarActivity 
    implements BusinessPartnerListFragment.Callbacks { 


    // rest of the code remains the same ... 
    // ... 
    // ... 

} 

Попробуйте это. Это сработает.

+0

OK, теперь я могу видеть actionBar также в активности списка ... Но почему я вижу странную анимацию, когда я выбираю элемент в списке, прежде чем визуализировать детали? ActionBar НЕ остается фиксированным (изменение только содержимого (master-> detail) ... Я вижу быструю анимацию: это как если бы ActionBar немного опустился, прежде чем отображать детали. Можете ли вы сказать мне, почему это так? может избежать этого? – Safari

+0

@Safari: можете ли вы предоставить изображение или видео о том, что именно происходит при выборе элемента списка? Также предоставьте код для детальной деятельности –

+0

@Zygotelnit Я редактировал вопрос: я добавил код и видео Активация панели действий. – Safari

0

да делают это правильно, я имею в виду ваш код является совершенным. Если вы хотите закончить свой текущий, то

finish(); 

is perfect other wise не нужно его называть.

+0

Хорошо, спасибо ... и как я могу показать ActionBar в активности List (Master)? (на самом деле я могу видеть ActionBar только в подробном виде). – Safari

+0

показать код активности –

+0

@ZygoteInit Я отредактировал мой вопрос с кодом моего списка activity – Safari

Смежные вопросы