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

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

新規登録して質問してみよう
ただいま回答率
85.48%
mBaaS

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

Kotlin

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

Q&A

解決済

1回答

707閲覧

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

akawo

総合スコア23

mBaaS

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

Kotlin

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

0グッド

0クリップ

投稿2018/07/06 12:24

編集2018/07/06 14:07

**【目標】
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) } }

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

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

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

投稿2018/07/06 23:18

akawo

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問