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

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

ただいまの
回答率

90.50%

  • Kotlin

    330questions

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

  • mBaaS

    67questions

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

java.lang.NullPointerException: Attempt to invoke virtual methodをなくしたい

解決済

回答 1

投稿 編集

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

akawo

score 13

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

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

【問題とお願い】
・アプリはクラッシュしないのですが、常にerrorがあることで、サーバーにアカウントを作成することができない?
・下記コードのlogcatエラーをなくしたいので、アドバイス願います、、、

【コード】**

logcat(問題発生時)

07-06 21:02:32.838 2225-2302/? E/WindowManager: Unhandled exception in Window Manager
    java.lang.NullPointerException: Attempt to invoke virtual method 'void com.android.server.wm.DisplayContent.getLogicalDisplayRect(android.graphics.Rect)' on a null object reference
        at com.android.server.wm.WindowState.computeFrameLw(WindowState.java:882)
        at com.android.server.policy.PhoneWindowManager.layoutWindowLw(PhoneWindowManager.java:5044)
        at com.android.server.wm.WindowSurfacePlacer.performLayoutLockedInner(WindowSurfacePlacer.java:1007)
        at com.android.server.wm.WindowSurfacePlacer.applySurfaceChangesTransaction(WindowSurfacePlacer.java:664)
        at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner(WindowSurfacePlacer.java:322)
        at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:235)
        at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:183)
        at com.android.server.wm.WindowManagerService.relayoutWindow(WindowManagerService.java:3128)
        at com.android.server.wm.Session.relayout(Session.java:227)
        at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:6202)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2012)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1462)
        at android.view.WindowManagerGlobal.doTraversal(WindowManagerGlobal.java:394)
        at com.android.server.policy.PhoneWindowManager.addFastStartingWindow(PhoneWindowManager.java:8490)
        at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:8402)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.os.HandlerThread.run(HandlerThread.java:61)
        at com.android.server.ServiceThread.run(ServiceThread.java:46)

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)
    }
}

この問題に長い時間を取られております、、、
何卒、何卒、ご教授のほどよろしくお願いします!!!

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

check解決した方法

0

まさかのコードを実行させているタブレットがwifiに接続されておらず、出ていた模様です、、、
新しいエラーが出てきたので異なる質問を立てさせていただきます、、、

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

  • 解決済

    違うクラスでボタンの処理を書く

    Activityの親クラスではないクラスでボタンタップ時の処理を書きたいです。 下のように書いてみたのですが i1.setOnClickListener( new  com

  • 解決済

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

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

  • 受付中

    kotlinの待機処理について

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

  • 受付中

    Androidでアクションバーのタイトルが「...」で終わるかどうか判定する方法

    タイトルの通りですが、 Activity.setTitle()で指定したタイトルは長すぎると 「あいうえおかきくけこ...」になってしまいます。 「長すぎる場合はフォントを小さ

  • 解決済

    Image Button を押して画面を切り替えたい

     Image Buttonを押して表示画面を切り替えたい。 皆さんこんにちは。 ただいま、Androidアプリを作っているのですが任意の画像をAndroid上のボタンとしたくima

  • 解決済

    GridViewで選択した画像をSurfaceViewで表示したい

    SurfaceViewで手書きした画像を内部ストレージに(複数)保存してそれをGridViewで表示し、それを選択すると再度SurfaceViewで表示したいのですがやり方がわかり

  • 解決済

    Activityをまとめて削除する

    以前の質問で同じようなことを教えていただいたのですが 今回はA→B→C→Dというアクティビティ遷移でCからDに遷移する際にほかのActivityを削除したいです。調べて見たところ参

  • 解決済

    imageButton を押して 画面遷移したい

    Product.xmlで指定しているimageButtonの画像をクリックした際に 新しい画面への遷移を行いたいです。 イメージは 商品写真クリック➡︎その商品の詳細画面へ遷移

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

  • Kotlin

    330questions

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

  • mBaaS

    67questions

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