2016-08-10 14 views
-2

を上げるにはこのコードこのコードの実行時例外

package com.example.lenovo.email; 

import android.accounts.Account; 
import android.accounts.AccountManager; 
import android.content.Context; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.util.Patterns; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.Spinner; 

import java.util.regex.Pattern; 

public class MainActivity extends AppCompatActivity { 
    private static String[] userEmailId = null; 
    private static String mDeviceId = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Spinner dropdown = (Spinner)findViewById(R.id.spinner); 

     String[] email_a=null; 
     email_a=setUserEmailId(this); 
     if(email_a == null) 
     { 
      throw new RuntimeException("null"); 
     } 
     else { 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, email_a); 
      dropdown.setAdapter(adapter); 
      EditText edit = (EditText) findViewById(R.id.editText2); 
      // edit.setText(setUserEmailId(this)); 
     } 

    } 
    //used to get accounts in dropdown list 
    private static String[] setUserEmailId(Context mContext) { 
     Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ 
     Account[] accounts = AccountManager.get(mContext).getAccounts(); 
int i=0; 
     for (Account account : accounts) { 
      if (emailPattern.matcher(account.name).matches()) { 
       userEmailId[i] = account.name; 
       Log.d("Email",userEmailId[i]); 
       i++; 
      } 
     } 

     return userEmailId; 
    } 

} 

アプリケーションにモバイルからアカウントを取得することで、コードが実行時例外を与えます。
このコードを実行すると、アプリケーションが停止しました。
私はこの例外を解決することはできません .....

+0

はSOへようこそ!次のように質問を編集する必要があります:http://stackoverflow.com/help/how-to-ask – Shaishav

+0

クラッシュについての質問をするときは、logcatの詳細も含めなければなりません –

+0

あなたのlogcat – SaravInfern

答えて

1

問題は、あなたがそれに要素を追加しようとしているとき、それはまだnullで、あなたが適切userEmailIdを初期化していないです。

私はあなたの代わりにString配列のArrayListを使用することをお勧めしたい:

private List<String> getUserEmailId(Context context) { 
    List<String> list = new ArrayList<>(); 

    Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
    Account[] accounts = AccountManager.get(context).getAccounts(); 

    for (Account account : accounts) { 
     if (emailPattern.matcher(account.name).matches()) { 
      list.add(account.name); 
     } 
    } 

    return list; 
} 
0

をあなたはそれを解決せずにRuntimeExceptionを使用しないのはなぜ?私はあなたが例外をキャッチする必要があることを意味し、その後それで何かをしてください:)

私は考えますsetUserEmailIdメソッドnullを返します。電子メールを見つけようとしているコードの論理を確認しましょう。 RuntimeExceptionアプリの停止を強制する主な理由である、あなたは電子メールを見つけられませんでしたときLogcatを使用する必要があります:)

if(email_a == null){ 
    throw new RuntimeException("null"); 
} 
関連する問題