AMcoder - javascript, python, java, html, php, sql

Android onConfigurationՓոխվել է, չի կանչվում

Ես դժվարանում եմ Android-ին ասել, որ չզանգահարի onCreate()ին, երբ կողմնորոշումը փոխվի: Ես ավելացրել եմ android:configChanges="orientation" իմ մանիֆեստին, բայց երբ կողմնորոշումը փոխվում է, կոչվում է onCreate(): Ահա իմ կոդը.

AndroidManifest.xml

<activity android:name="SearchMenuActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation"></activity>

SearchMenuActivity.java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Set the current layout to the search_menu
    setContentView(R.layout.search_menu_activity);

    Log.d(TAG, "onCreate() Called");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
    //don't reload the current page when the orientation is changed
    Log.d(TAG, "onConfigurationChanged() Called");
    super.onConfigurationChanged(newConfig);
}

Եվ իմ LogCat ելքը

06-23 12:33:20.327: DEBUG/APP(2905): onCreate() Called
//Orientation Changes
06-23 12:33:23.842: DEBUG/APP(2905): onCreate() Called

Որևէ մեկը գիտի՞, թե ինչ եմ ես սխալ անում: Շնորհակալություն։


Պատասխանները:


1

Փորձելու մի քանի բան.

android:configChanges="orientation|keyboardHidden|screenSize" այլ ոչ թե android:configChanges="orientation"

Համոզվեք, որ ոչ մի տեղ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); չեք զանգում: Սա կհանգեցնի նրան, որ onConfigurationChange()-ը չգործարկվի:

Ստուգեք, որ դուք չեք օգտագործում android:screenOrientation-ը ձեր մանիֆեստում:

Եթե ​​դրանցից ոչ մեկը չի աշխատում, կարդացեք Android-ի փաստաթուղթը գործարկման ժամանակի փոփոխությունների հետ կապված և համոզվեք, որ ամեն ինչ ճիշտ եք անում: Ձեր կոդի մեջ կարող է ինչ-որ այլ տեղ լինել, որն առաջացնում է խնդիրը: http://developer.android.com/guide/topics/resources/runtime-changes.html< /ա>

Խմբագրել. Ինչպես նշեց դերիկը, ես ենթադրում էի, որ դուք փոխում եք կոնֆիգուրացիան արագացուցիչով, որը հայտնաբերում է, թե որ կողմն է կանգնած սարքը: Եթե ​​ցանկանում եք, որ կոնֆիգուրացիան փոխվի, քանի որ ստեղնաշարը ցուցադրվում/թաքնվում է, configՓոփոխությունները մանիֆեստում պետք է ներառեն նաև keyboardHidden-ը:

23.06.2011
  • ինձ համար հնարքն էր օգտագործել android:configChanges=orientation|keyboardHidden|screenSize 11.03.2014

  • 2

    This was my gremlin for the ~ same problem:

    Ուշադրություն. սկսած Android 3.2-ից (API մակարդակ 13), «էկրանի չափը» նույնպես փոխվում է, երբ սարքն անցնում է դիմանկարային և լանդշաֆտային կողմնորոշման միջև: Այսպիսով, եթե ցանկանում եք կանխել գործարկման ժամանակի վերագործարկումը՝ պայմանավորված API-ի 13 կամ ավելի բարձր մակարդակի մշակման ժամանակ կողմնորոշման փոփոխությամբ (ինչպես հայտարարված է minSdkVersion և targetSdkVersion ատրիբուտներով), դուք պետք է ներառեք «screenSize» արժեքը՝ ի լրումն «կողմնորոշման» արժեքի: Այսինքն, դուք պետք է decalare android:configChanges="orientation|screenSize": Այնուամենայնիվ, եթե ձեր հավելվածը թիրախավորում է API 12 կամ ավելի ցածր մակարդակը, ապա ձեր գործունեությունը միշտ ինքն է լուծում այս կազմաձևման փոփոխությունը (կազմաձևման այս փոփոխությունը չի վերսկսում ձեր գործունեությունը, նույնիսկ երբ աշխատում է Android 3.2 կամ ավելի բարձր սարքում):

    (http://developer.android.com/guide/topics/resources/runtime-changes.html)

    TL;DR. ավելացնել «|screenSize» android:configChanges="orientation" API 14+-ի համար

    09.09.2011
  • Հրաշալի է... Իմ targetSdkVersion-ը 8-ից 14-ի փոխելուց հետո ես մտածում էի, թե ինչու onConfigurationChanged()-ը չի կանչվում: 18.05.2012

  • 3

    Փորձեք օգտագործել այս մեկը.....

    android:configChanges="orientation|keyboardHidden|screenSize"
    
    17.01.2013

    4

    AndroidManifest.xml-ում պետք է փոխեք configChanges մուտքը հետևյալի.

    android:configChanges="keyboardHidden|orientation"
    

    Հակառակ դեպքում, ստեղնաշարը սահեցնելը չի ​​գործարկի onConfigurationChange()-ը, չնայած որ կողմնորոշումը փոխվում է: Ես հենց նոր փորձարկեցի սա իմ HTC Desire Z-ի վրա:

    23.06.2011
  • Իմ դեպքում այն ​​աշխատում էր միայն այն ժամանակ, երբ ավելացրի |screenSize: 11.03.2014
  • այս պատասխանն այլևս վավեր չէ՝ sdk-ի փոփոխությունների պատճառով 06.08.2014

  • 5

    Ավելացրեք սա ձեր մանիֆեստին յուրաքանչյուր գործունեությանը:

    android:configChanges="keyboardHidden|orientation|screenSize"
    

    Այնուհետև, որպես այդպիսին, վերացրեք onConfigurationChanged

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
    
    29.07.2013

    6

    Դրսեւորել:

    <activity
          android:name=".MainActivity"
          android:configChanges="orientation|keyboardHidden|screenSize">
    </activity>
    

    Գործունեություն և հատված.

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.d(TAG, "onConfigurationChanged  " +
                   (newConfig.orientation
                    == Configuration.ORIENTATION_LANDSCAPE
                    ? "landscape" : "portrait"));
    }
    

    Արդյունք:

    10-29 21:53:26.951 D/FragmentOne: onConfigurationChanged landscape
    
    10-29 21:53:26.951 D/MainActivity:onConfigurationChanged landscape
    
    30.10.2015

    7

    Այն չէր հրահրում իմ Fragment-ում (Fragments գրանցված չեն AndroidManifest.xml-ում), այնպես որ ես ստիպված էի այն տեղափոխել Activity, որը կառավարում է իմ Fragment-ը, իմ դեպքում՝ TabsPagerActivity:

    23.02.2015

    8

    Մի քանի բան կարելի է խաչաձև ստուգել.

    Իմ դեպքում ես հետևում էի սարքի լեզվի փոփոխությանը` օգտագործելով onConfigurationChanged:

    Որոշ բաներ պետք է իմանալ onConfigurationChanged-ի մասին, այն է, որ որոշակի տարբերություն կա վարքագծի մեջ onConfigurationChanged of Activity-ի և Application-ի միջև:

    Երբ փոխեք սարքի կազմաձևը, հավելվածի մակարդակը onConfigurationChanged կկանչվի ավտոմատ և անմիջապես, բայց onConfigurationChanged of Activity-ը կկանչի, երբ դուք նավարկեք դեպի այդ գործողությունը:

    և մեկ այլ բան այն է, որ մանիֆեստում միայն տեղայնացումը երբեմն չի աշխատի: Այսպիսով, դուք հայտարարում եք կազմաձևման փոփոխության այլ իրադարձություն՝ տեղանքի հետ միասին (իմ դեպքում), որը պետք է լինի android:configChanges="layoutDirection|locale":

    23.02.2018
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..