2012-10-02 139 views
0

我有一個片段的活動加載一個單一的記錄選定的全行,這是第一次正常工作,但如果我改變方向崩潰並拋出「未找到源」 。當我通過線調試線,一些TextView的不可用(返回null),這是我的片段活動代碼:Android的方向更改與片段處理的片段活動

@Override 


public void onCreate(Bundle savedInstanceState)` 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.client_layout); 

     if (savedInstanceState==null) 
     { 
      clientActivityViewModel= (ClientActivityViewModel)getLastCustomNonConfigurationInstance(); 

      if(clientActivityViewModel==null) 
      { 
       clientActivityViewModel= new ClientActivityViewModel(getBaseContext()); 
       if (bundle== null) 
       { 
        bundle= getIntent().getExtras(); 
       } 
       clientActivityViewModel.setAccountId(bundle.getString("accountId")); 
       clientActivityViewModel.GetAccountInformation(bundle.getString("accountId")); 
       clientInformationActivity= new ClientInformationActivity(); 
       clientInformationActivity.setAccountInformation(clientActivityViewModel.getAccountInformation()); 

       clientActivityViewModel.GetAccountComplementaryInformation(bundle.getString("accountId")); 
       clientComplementaryInformationActivity= new ClientComplementaryInformationActivity(); 
       clientComplementaryInformationActivity.setAccountComplementaryInformation(clientActivityViewModel.getAccountComplementaryInformation()); 
      } 

      if(clientActivityViewModel!=null) 
      { 
       clientActivityViewModel.GetAccountInformation(clientActivityViewModel.getAccountId()); 
       clientInformationActivity= new ClientInformationActivity(); 
       clientInformationActivity.setAccountInformation(clientActivityViewModel.getAccountInformation()); 

       clientActivityViewModel.GetAccountComplementaryInformation(clientActivityViewModel.getAccountId()); 
       clientComplementaryInformationActivity= new ClientComplementaryInformationActivity(); 
       clientComplementaryInformationActivity.setAccountComplementaryInformation(clientActivityViewModel.getAccountComplementaryInformation()); 

       if (clientActivityViewModel != null) 
       { 
        pager = (ViewPager) findViewById (R.id.pager); 
        MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); 
        adapter.addFragment(clientInformationActivity); 
        adapter.addFragment(clientComplementaryInformationActivity); 
        adapter.addFragment(new ClientAddressActivity()); 
        adapter.addFragment(new ClientPaymentInfoActivity()); 
        adapter.addFragment(new ClientDescriptionInfoActivity()); 
        pager.setAdapter(adapter); 
       } 
      } 
     } 
    } 


    @Override 
    public Object onRetainCustomNonConfigurationInstance() 
    { 
     if (clientActivityViewModel== null) 
     { 
      clientActivityViewModel= new ClientActivityViewModel(getBaseContext()); 
      bundle= getIntent().getExtras(); 
      clientActivityViewModel.setAccountId(bundle.getString("accountId")); 
     } 
     return clientActivityViewModel; 
    } 
+0

我沒有看到任何textviews在發佈的代碼.. – Barak

回答

0

我相信你說的是,當方向改變你的代碼不能運行。

如果是這種情況,那麼當方向再次改變時Oncreate被調用。這就是爲什麼你的活動在第一次後沒有正確運行。

爲了解決這個問題,你有你的清單文件中聲明這一點:

android:configChanges="keyboardHidden|orientation" 
android:configChanges="keyboardHidden|screensize" 

最後一行是僅在速效的Android 3.0及以上

+0

應該是'screenSize'。(否則不會編譯) – ygesher