2016-07-03 9 views
2

Ich habe die Aktivität, die ein Kind von MapActivity ist.onCreate in abstrakten übergeordneten Aktivität keine in Kotlin aufgerufen

class RecordingActivity : MapActivity() { 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     Log.d("RecirdingActivity", "InitializeMap") //called 
    } 

    override fun getView(): Int { 
     return R.layout.activity_recording 
    } 
} 

ich diese Tätigkeit aus meiner Haupttätigkeit nennen:

fab.setOnClickListener { 
      Log.d("MainActivity", "fabClick") //called 
      startActivity(intentFor<RecordingActivity>()) 
     } 

und ich habe die abstrakte Aktivität:

abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback { 

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { 
     super.onCreate(savedInstanceState, persistentState) 
     setContentView(getView()) 
     initializeMap() 
     Log.d("MapActivity", "InitializeMap")//not called 
    } 
} 

und onCreate Verfahren dieser Aktivität genannt wird nie

Ich verfolgte es mit einem Debugger und ich hatte das gleiche Ergebnis. Was mache ich falsch?

+5

Sie wollen die 'onCreate()' Überlast mit nur dem einen 'Bundle' Parameter. Kein 'PersistableBundle'. –

Antwort

5

scheint es zwei Lösungen zu sein:

  1. vielleicht die onCreate Sie tatsächlich in MapActivity außer Kraft zu setzen hat die Signatur onCreate(android.os.Bundle):

    abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback { 
    
        override fun onCreate(savedInstanceState: Bundle?) { 
         super.onCreate(savedInstanceState) 
         setContentView(getView()) 
         initializeMap() 
         Log.d("MapActivity", "InitializeMap") 
        } 
    } 
    
  2. die Dokumentation der onCreate(android.os.Bundle, android.os.PersistableBundle) Methode, die sein wird, Overridden in MapActivity schlägt vor, dass persistableMode für die Aktivität in AndroidManifest.xml auffestgelegt werden muss, damit es aufgerufen wird ... aber MapActivity ist abstrakt, also müssten Sie stattdessen das Attribut für seine Unterklassen setzen. in diesem Fall wäre das RecordingActivity.

    <?xml version="1.0" encoding="utf-8"?> 
    <manifest> 
        ... 
        <application> 
         ... 
         <activity 
          android:name=".RecordingActivity" 
          android:persistableMode="persistAcrossReboots"/> 
         ... 
        </application> 
        ... 
    </manifest> 
    
Verwandte Themen