onActivityResult内のEditTextのテキストを更新できません

Samarth Agarwal

Androidで音声認識を使おうとしています。以下は私のコードです。

これは、音声認識を開始するためのボタンのコードです。talk.setOnClickListener(new OnClickListener(){

@Override
    public void onClick(View v)
    {
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "City Name Please?");
        startActivityForResult(intent, REQUEST_CODE);
    }});

これがonActivityResultメソッドです。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        ArrayList<String> matches_Text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        Log.v("Results", matches_Text.get(0).toString());

//Update EditText cityname here

        String normalized_cityname = matches_Text.get(0).toString().trim();
        normalized_cityname = normalized_cityname.replace(" ","%20");
        try {
            getResponseString("http://api.openweathermap.org/data/2.5/weather?q="+normalized_cityname+"&units=metric", true);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

コードは正常に機能しましたが、現在発生している2つの問題があり、それらが関連している可能性があるのではないかと心配しています。

  1. を使用してEditTextインスタンスのテキストを更新しようとすると、アプリがクラッシュします。citynamecityname.setText(matches_Text.get(0).toString())
  2. 私がヒットした場合speak、今のボタンを、Googleの音声ダイアログはなく、ショーをアップしますcan't reacg google at the moment

何ができるか提案してください。

getResponseStringメソッドも追加します。

public void getResponseString(String Url, boolean IsCalledOnVoiceInput) throws IOException, JSONException {
        String temperature="";
        String city;
        String country;
        String weather_main, weather_description;
        MyAsyncTask xxx = new MyAsyncTask();
        try {
            String responseString = xxx.execute(Url).get();

            TextView txtTemp = (TextView)findViewById(R.id.txt_temp);
            TextView txtCity = (TextView)findViewById(R.id.txt_CityName);
            TextView txtWeatherMain = (TextView)findViewById(R.id.textView2);
            TextView txtWeatherDescription = (TextView)findViewById(R.id.textView3);

            JSONObject reader = new JSONObject(responseString);
            JSONObject main  = reader.getJSONObject("main");

            temperature = main.getString("temp");
            Log.v("temperarure",temperature);

            city = reader.getString("name");
            Log.v("city",city);

            JSONObject sys  = reader.getJSONObject("sys");
            country = sys.getString("country");
            Log.v("country",country);

            JSONArray weather = reader.getJSONArray("weather");
            JSONObject weather_obj = weather.getJSONObject(0);
            weather_main = weather_obj.getString("main");
            weather_description = weather_obj.getString("description");

            txtTemp.setText(temperature+" °C");
            txtCity.setText(city+" ("+country+")");
            txtWeatherMain.setText(weather_main);
            txtWeatherDescription.setText(weather_description);

            if(IsCalledOnVoiceInput)
                Speak_Weather_Data(city,temperature,weather_main,weather_description);



        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (JSONException e){
            e.printStackTrace();
        }
    }

これがログ出力です

    12-24 13:36:06.050  12164-12164/samarth.learning.http D/dalvikvm﹕ Late-enabling CheckJNI
12-24 13:36:06.300  12164-12164/samarth.learning.http D/Network﹕ Network
12-24 13:36:06.300  12164-12164/samarth.learning.http V/Lat﹕ 28.8331443
12-24 13:36:06.300  12164-12164/samarth.learning.http V/Long﹕ 78.7717138
12-24 13:36:06.360  12164-12164/samarth.learning.http D/libEGL﹕ loaded /vendor/lib/egl/libEGL_adreno.so
12-24 13:36:06.370  12164-12164/samarth.learning.http D/libEGL﹕ loaded /vendor/lib/egl/libGLESv1_CM_adreno.so
12-24 13:36:06.380  12164-12164/samarth.learning.http D/libEGL﹕ loaded /vendor/lib/egl/libGLESv2_adreno.so
12-24 13:36:06.380  12164-12164/samarth.learning.http I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:316>: EGL 1.4 QUALCOMM build:  (CL4169980)
    OpenGL ES Shader Compiler Version: 17.01.10.SPL
    Build Date: 11/04/13 Mon
    Local Branch:
    Remote Branch:
    Local Patches:
    Reconstruct Branch:
12-24 13:36:06.430  12164-12164/samarth.learning.http D/OpenGLRenderer﹕ Enabling debug mode 0
12-24 13:36:06.531  12164-12164/samarth.learning.http E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
12-24 13:36:06.531  12164-12164/samarth.learning.http E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
12-24 13:36:08.232  12164-12164/samarth.learning.http W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection
12-24 13:36:18.844  12164-12164/samarth.learning.http V/Results﹕ new delhi
12-24 13:36:18.844  12164-12164/samarth.learning.http D/AndroidRuntime﹕ Shutting down VM
12-24 13:36:18.844  12164-12164/samarth.learning.http W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4157c8b0)
12-24 13:36:18.854  12164-12164/samarth.learning.http E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1234, result=-1, data=Intent { (has extras) }} to activity {samarth.learning.http/samarth.learning.http.MainActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3462)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3505)
            at android.app.ActivityThread.access$1100(ActivityThread.java:150)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at samarth.learning.http.MainActivity.onActivityResult(MainActivity.java:160)
            at android.app.Activity.dispatchActivityResult(Activity.java:5322)
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3458)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3505)
            at android.app.ActivityThread.access$1100(ActivityThread.java:150)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)
12-24 13:36:22.558  12164-12164/samarth.learning.http I/Process﹕ Sending signal. PID: 12164 SIG: 9
沿って

これはどういう意味ですか?

私はmatches_Textが時々NULLだと思いますか?!追加するのはどうですか

if(matches_Text == null){
   Log.v("Results","matches_Text is NULL!"); 
   return;
}

直後に上記のコードを追加します ArrayList<String> matches_Text = da...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DIV要素内のテキストを選択できません

分類Dev

AndroidのEditTextから入力テキストを取得できません

分類Dev

スイングのテキスト領域を更新できません

分類Dev

TextInputLayoutの下のEditTextから取得したTextViewのテキストを印刷できません

分類Dev

<div>および<ul>内のテキストを強調表示できません

分類Dev

setTimeout関数内のボタンテキストを変更できません

分類Dev

テキスト内の隠し文字を削除できませんか?

分類Dev

フラグメントのonActivityResultでビューを更新できません

分類Dev

リスト内のキーを処理できません

分類Dev

JavaのJTextAreaのテキストを変更できません

分類Dev

javascriptで子要素のテキストを取得できません

分類Dev

TDタグ内の2番目のスパンタグでテキスト装飾を削除できません

分類Dev

HTML文字列内の特定のテキストをJavaに置き換えることはできません

分類Dev

DIV内のテキストを変更した後、jqueryでDIVのサイズを変更できません

分類Dev

TextFormFieldでテキストを更新できません

分類Dev

React-フォーム内のテキストフィールドの最新の値を取得できません

分類Dev

TextViewのテキストを設定できません

分類Dev

AppCompatDialog:テキストの色を変更できません

分類Dev

「この」コンテキスト出力を理解できません

分類Dev

SVGテキストの最大幅を設定できません

分類Dev

pandocは幅のテキストを変更できません

分類Dev

テキストをtextviewの中央に配置できません

分類Dev

Pythonのxmlからテキストを抽出できません

分類Dev

複数行のテキストを表示できません

分類Dev

テキスト間の空白を無視できません

分類Dev

テキスト装飾の下線を削除できません

分類Dev

画像の中央にテキストを配置できません

分類Dev

hololensのテキストを変更できません

分類Dev

ボタンのテキストを変更できません

Related 関連記事

  1. 1

    DIV要素内のテキストを選択できません

  2. 2

    AndroidのEditTextから入力テキストを取得できません

  3. 3

    スイングのテキスト領域を更新できません

  4. 4

    TextInputLayoutの下のEditTextから取得したTextViewのテキストを印刷できません

  5. 5

    <div>および<ul>内のテキストを強調表示できません

  6. 6

    setTimeout関数内のボタンテキストを変更できません

  7. 7

    テキスト内の隠し文字を削除できませんか?

  8. 8

    フラグメントのonActivityResultでビューを更新できません

  9. 9

    リスト内のキーを処理できません

  10. 10

    JavaのJTextAreaのテキストを変更できません

  11. 11

    javascriptで子要素のテキストを取得できません

  12. 12

    TDタグ内の2番目のスパンタグでテキスト装飾を削除できません

  13. 13

    HTML文字列内の特定のテキストをJavaに置き換えることはできません

  14. 14

    DIV内のテキストを変更した後、jqueryでDIVのサイズを変更できません

  15. 15

    TextFormFieldでテキストを更新できません

  16. 16

    React-フォーム内のテキストフィールドの最新の値を取得できません

  17. 17

    TextViewのテキストを設定できません

  18. 18

    AppCompatDialog:テキストの色を変更できません

  19. 19

    「この」コンテキスト出力を理解できません

  20. 20

    SVGテキストの最大幅を設定できません

  21. 21

    pandocは幅のテキストを変更できません

  22. 22

    テキストをtextviewの中央に配置できません

  23. 23

    Pythonのxmlからテキストを抽出できません

  24. 24

    複数行のテキストを表示できません

  25. 25

    テキスト間の空白を無視できません

  26. 26

    テキスト装飾の下線を削除できません

  27. 27

    画像の中央にテキストを配置できません

  28. 28

    hololensのテキストを変更できません

  29. 29

    ボタンのテキストを変更できません

ホットタグ

アーカイブ