2017-09-22 11 views
0

主な活動にアクセスしようとすると、アプリケーションがクラッシュ:別のアクティビティに

val turminha : Turma = this.abrirArquivo() 

    recycler_view.layoutManager = LinearLayoutManager(this) 
    recycler_view.adapter = AlunoAdapter(this,turminha.alunos) 

    floatingActionButton.setOnClickListener({ 
     val i = Intent(this, ActivityAddAluno::class.java) 
     i.putExtra("turma", turminha) 
     startActivity(i) 
    }) 

ActivityAddAluno

class ActivityAddAluno : AppCompatActivity() { 
    var i = getIntent() 
    private var turma = i.getSerializableExtra("turma") as Turma 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_add_aluno) 

     mBtnSalvarAluno.setOnClickListener{ 
      var name = mEdtNomeAluno.text.toString() 
      var matricula = mEdtMatriculaAluno.text.toString() 
      toast("Nome: $name \n," + 
       "Matricula: $matricula") 

      turma.addAluno(Aluno(name, matricula)) 
     } 
    } 

クラスAluno クラスAluno:直列化{

var disciplinas: ArrayList<Disciplina>? = null 
    private set 
var nome: String? = null 
var matricula: String? = null 

constructor() { 
    disciplinas = ArrayList() 
} 

constructor(nome: String, matricula: String) { 
    this.nome = nome 
    this.matricula = matricula 
    disciplinas = ArrayList() 
} 

クラスTurma

class Turma() : Serializable { 

    val alunos: ArrayList<Aluno> 

    init { 
     alunos = ArrayList() 
    } 

    fun addAluno(aluno: Aluno) { 
     alunos.add(aluno) 
    } 

フロートボタンでTurmaオブジェクトを渡している他のアクティビティにアクセスしようとすると、アプリケーションが機能しなくなります。

var i = getIntent() 
private var turma = i.getSerializableExtra("turma") as Turma 

はlogcat::

FATAL EXCEPTION: main 
Process: com.example.thial.estudandokotlin, PID: 3428 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.thial.estudandokotlin/com.example.thial.estudandokotlin.ActivityAddAluno}: 
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.content.Intent.getSerializableExtra(java.lang.String)' on a null object reference 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548) 

どのように私はこの問題を解決することができますLogcatは、問題は、コードの一部であると言いますか?

+0

可能な複製である

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //... var i = getIntent() if(i!=null) { private var turma = i.getSerializableExtra("turma") as Turma } } 

(ヨシュアが述べた通り)/218384/what-is-a-nullpointレセプションと方法-i-fix-it) – Joshua

+0

javaのnullpointerについてのこの説明は私の場合を解決しません。この問題がどこで起こっているのか分かりません。教えてください。 –

+0

'var i = getIntent()'はヌル可能です。それが理由です。 'i'が' null'のときは 'i.getSerializableExtra(" turma ")を呼び出します。それはエラーで言った。 – Joshua

答えて

0

実際にあなたのログ・キャット・メッセージごとに問題が発生しています。

var i = getIntent() 
private var turma = i.getSerializableExtra("turma") as Turma 

ここで値「i」は、ヌルと、それはあなたのgetSerializableExtra()文字列を取るしようとしているの上にあります。

ActivityAddAlunoクラスでこの行を正確に呼び出すのはどこですか?それはコンストラクタ内ではなくonCreate関数の中になければなりません。ここでは例の1 [何NullPointerExceptionがある、と私はそれをどのように修正すればよい?](https://stackoverflow.com/questionsのSwitching between Activities along with data using Kotlin

+0

私はfloatingbuttonでActivityAddAlunoを呼び出しています。私はonCreate関数内でコードを使用しようとしましたが、私の意図はまだnullです。 –

+0

私が与えたコードを使用しましたか? ActivityAddAlunoクラス内にある必要があります。あなたのコードで質問に投稿した内容はありません –

+1

実際、あなたの解決策は私のために解決されました。ありがとうございました! –

関連する問題