0

選択した単一のレコードの行全体をロードするフラグメント アクティビティがあり、最初は正常に動作しますが、方向を変更するとクラッシュし、「ソースが見つかりません」がスローされます。行ごとにデバッグすると、一部の TextView が使用できなくなります (null が返されます)。これが私のフラグメント アクティビティ コードです。

@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;
    } 
4

1 に答える 1

0

向きが変わるとコードが実行されないと言っていると思います。

この場合、向きが再び変わると、Oncreateが呼び出されます。そのため、初回以降、アクティビティが正しく実行されていません。

これを修正するには、マニフェスト ファイルで次のように宣言します。

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

最後の行は、Android 3.0 以降でのみ使用できます

于 2012-10-02T15:31:09.677 に答える