質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Kotlin

    319questions

    Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

  • mBaaS

    67questions

    mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

RuntimeException: Unable to resume activity、 Failure delivering result ResultInfoのエラーを修正したい!

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 174

akawo

score 13

【目標】
ncmb(nifty cloud mobile backend)とkotlinでログイン機能の実装

【経緯】
githubにあるjavaファイルをkotlinに変更して進めているところです。
該当ファイルのあるURL↓
https://github.com/NIFCloud-mbaas/android_login_demo

【問題とお願い】
・下記コードのlogcatエラーをなくしたいので、アドバイス願います、、、

【コード】

logcat(問題発生時)

07-07 08:12:58.925 2606-2606/com.sourcey.user E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sourcey.user, PID: 2606
    java.lang.RuntimeException: Unable to resume activity {com.sourcey.user/com.nifty.user.LoginActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {com.sourcey.user/com.nifty.user.LoginActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3506)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3546)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2795)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
     Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {com.sourcey.user/com.nifty.user.LoginActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4178)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3474)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3546) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2795) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527) 
        at android.os.Handler.dispatchMessage(Handler.java:110) 
        at android.os.Looper.loop(Looper.java:203) 
        at android.app.ActivityThread.main(ActivityThread.java:6251) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 
     Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
        at com.nifty.user.LoginActivity.onActivityResult(LoginActivity.kt)
        at android.app.Activity.dispatchActivityResult(Activity.java:6919)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4174)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3474) 
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3546) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2795) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527) 
        at android.os.Handler.dispatchMessage(Handler.java:110) 
        at android.os.Looper.loop(Looper.java:203) 
        at android.app.ActivityThread.main(ActivityThread.java:6251) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 

SignupActivity(問題activity)

@file:Suppress("DEPRECATION")

package com.nifty.user

import android.app.Activity
import android.app.ProgressDialog
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.widget.Toast

import com.nifty.cloud.mb.core.NCMBUser

import kotlinx.android.synthetic.main.activity_signup.*
import org.jetbrains.anko.startActivity

@Suppress("DEPRECATION")
class SignupActivity : AppCompatActivity() {


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

        btn_signup!!.setOnClickListener { signup() }

        link_login!!.setOnClickListener {
            // Finish the registration screen and return to the Login activity
            startActivity<LoginActivity>()
        }
    }

    private fun signup() {
        Log.d(TAG, "Signup")

        if (!validate()) {
            onSignupFailed()
            return
        }

        btn_signup!!.isEnabled = false

        val progressDialog = ProgressDialog(this@SignupActivity,
                R.style.AppTheme_Dark_Dialog)
        progressDialog.isIndeterminate = true
        progressDialog.setMessage("Creating Account...")
        progressDialog.show()

        val name = input_name!!.text.toString()
        val password = input_password!!.text.toString()

        // TODO: Implement your own signup logic here.
        //NCMBUserのインスタンスを作成
        val user = NCMBUser()
        //ユーザ名を設定
        user.userName = name
        //パスワードを設定
        user.setPassword(password)
        //設定したユーザ名とパスワードで会員登録を行う

        user.signUpInBackground { e  ->
            if (e != null) {
                //会員登録時にエラーが発生した場合の処理
                onSignupFailed()
            } else {
                android.os.Handler().postDelayed(
                        {
                            // On complete call either onSignupSuccess or onSignupFailed
                            // depending on success
                            onSignupSuccess()
                            // onSignupFailed();
                            progressDialog.dismiss()
                        }, 3000)
            }
        }
    }


    private fun onSignupSuccess() {
        btn_signup!!.isEnabled = true
        setResult(Activity.RESULT_OK, null)
        finish()
    }

    private fun onSignupFailed() {
        Toast.makeText(baseContext, "Signup failed", Toast.LENGTH_LONG).show()

        btn_signup!!.isEnabled = true
    }

    private fun validate(): Boolean {
        var valid = true

        val name = input_name!!.text.toString()
        val password = input_password!!.text.toString()

        if (name.isEmpty() || name.length < 3) {
            input_name!!.error = "at least 3 characters"
            valid = false
        } else {
            input_name!!.error = null
        }

        if (password.isEmpty() || password.length < 4 || password.length > 10) {
            input_password!!.error = "between 4 and 10 alphanumeric characters"
            valid = false
        } else {
            input_password!!.error = null
        }

        return valid
    }

    companion object {
        private const val TAG = "SignupActivity"
    }
}

MainActivity(アプリケーションキー等記載)

package com.nifty.user

import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import com.nifty.cloud.mb.core.NCMB
import com.nifty.cloud.mb.core.NCMBUser

class MainActivity : AppCompatActivity() {

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

        //**************** APIキーの設定とSDKの初期化 **********************
        NCMB.initialize(this.applicationContext, "7e6d6479ddc9c642f4229d2041c4a6093d2d1f45385c350543523c9b4c328e4f",
                "c81eea502681d9c069ca4104b98420ff59318b07f76aeec1cca3c816bbf08e87")

        val intent = Intent(this, LoginActivity::class.java)
        startActivity(intent)
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        val id = item.itemId


        if (id == R.id.action_settings) {
            return true
        }

        if (id == R.id.action_logout) {
            NCMBUser.logoutInBackground { e ->
                if (e != null) {
                    //エラー時の処理
                }
            }
            val intent = Intent(this, LoginActivity::class.java)
            startActivity(intent)
            return true
        }

        return super.onOptionsItemSelected(item)
    }
}

Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null
でエラー修正方法を探しているところです。

何か心当たりありましたら、ご教授いただけると甚幸の限りです、、、
何卒よろしくお願いいたします!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

以下のlogcatから解決いたしました!

logcat

Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
        at com.nifty.user.LoginActivity.onActivityResult(LoginActivity.kt)

LoginActivity(変更前)

@file:Suppress("DEPRECATION")

package com.nifty.user

import android.app.Activity
import android.app.ProgressDialog
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log

import android.content.Intent
import android.widget.Toast

import com.nifty.cloud.mb.core.NCMBException
import com.nifty.cloud.mb.core.NCMBUser

import kotlinx.android.synthetic.main.activity_login.*
import org.jetbrains.anko.startActivityForResult

class LoginActivity : AppCompatActivity() {



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

        btn_login?.setOnClickListener { login() }

        link_signup?.setOnClickListener {
            // Start the Signup activity
            val intent = Intent(applicationContext, SignupActivity::class.java)
            startActivityForResult(intent, REQUEST_SIGNUP)
        }
    }

    private fun login() {
        Log.d(TAG, "Login")

        if (!validate()) {
            onLoginFailed()
            return
        }

        btn_login?.isEnabled = false

        val progressDialog = ProgressDialog(this@LoginActivity,
                R.style.AppTheme_Dark_Dialog)
        progressDialog.isIndeterminate = true
        progressDialog.setMessage("Authenticating...")
        progressDialog.show()

        val name = input_name?.text.toString()
        val password = input_password?.text.toString()

        // TODO: Implement your own authentication logic here.
        //ユーザ名とパスワードを指定してログインを実行
        try {
            NCMBUser.loginInBackground(name, password) { _, e ->
                if (e != null) {
                    //エラー時の処理
                    onLoginFailed()
                } else {
                    android.os.Handler().postDelayed(
                            {
                                // On complete call either onLoginSuccess or onLoginFailed
                                onLoginSuccess()
                                // onLoginFailed();
                                progressDialog.dismiss()
                            }, 3000)
                }
            }
        } catch (e: NCMBException) {
            e.printStackTrace()
        }

    }


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
        if (requestCode == REQUEST_SIGNUP) {
            if (resultCode == Activity.RESULT_OK) {

                // TODO: Implement successful signup logic here
                // By default we just finish the Activity and log them in automatically
                this.finish()
            }
        }
    }

    override fun onBackPressed() {
        // Disable going back to the MainActivity
        moveTaskToBack(true)
    }

    private fun onLoginSuccess() {
        btn_login?.isEnabled = true
        finish()
    }

    private fun onLoginFailed() {
        Toast.makeText(baseContext, "Login failed", Toast.LENGTH_LONG).show()

        btn_login?.isEnabled = true
    }

    private fun validate(): Boolean {
        var valid = true

        val name = input_name?.text.toString()
        val password = input_password?.text.toString()

        if (name.isEmpty()) {
            input_name?.error = "enter username"
            valid = false
        } else {
            input_name?.error = null
        }

        if (password.isEmpty() || password.length < 4 || password.length > 10) {
            input_password?.error = "between 4 and 10 alphanumeric characters"
            valid = false
        } else {
            input_password?.error = null
        }

        return valid
    }



    companion object {
        private const val TAG = "LoginActivity"
        private const val REQUEST_SIGNUP = 0
    }
}

上記のLoginActivityの
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) 
において、
data: Intent

data: Intent?

に変更すると解決いたしました!!

お騒がせいたしました!
ありがとうございました!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    バックグランドのActivityを強制起動する方法

    Androidアプリ開発をしております。 一定時間経過後、たとえAndroid端末がスリープ状態だったとしてもActivityを起動する処理を実装しようとしています。

  • 解決済

    Android Firebaseでの通知受信について

    FirebaseでPush通知を処理するプログラムを作っています。 端末がスリープ状態にある時、通知を受けた時点でスリープから復帰したいのですが、 どうしても出来ません。

  • 解決済

    画像と文字列を同時に送りたい(PHP->Android)

    前提・実現したいこと サーバ側PHPでDBからSELECTした画像及び文字列を、Android端末に渡したいと考えています。 画像単体の受け渡しには成功したのですが、同時に文字

  • 解決済

    配列の全要素の値が一定の数値の時のif分の記載方法

    配列の全要素の値が一定の数値の時のif分の記載方法を知りたいです。 例えばこのようなソースコードの場合、 どのようにすれば全てがの値が1の時〜するというように記載できますか? 分か

  • 受付中

    kotlinの待機処理について

    KotlinでAndroidアプリを作っているのですが、待機処理について教えていただきたいです。 一定時間処理を停止しTextViewを更新を3回ほど繰り返した後、画面遷移したいの

  • 解決済

    shandler.removeCallbacks(showMessageTask);でhandler...

    想定している流れは、コンセントからスマホが抜かれた時にGPSの機能を持ったServiceをonにして、コンセントに接続された時には、接続されてから24時間後にGPSのservice

  • 受付中

    Android8.0の通知でカスタムサウンドが使用できません

    Android8.0から導入されたNotificationChannelを使用して、カスタムサウンドを設定したいと思っているのですが、うまく行きません。 通知自体は問題なく届く

  • 解決済

    Acitivity間でのデータの受け渡し

    二つのActivity A,B間でデータの受け渡しをしたいです。 データはMyDataというクラスを作り変数がまとめられています。 Aは閲覧、Bは編集用のActivityです。

同じタグがついた質問を見る

  • Kotlin

    319questions

    Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

  • mBaaS

    67questions

    mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。