2012-08-29 3 views
0

두 개의 버튼이 동일한 활동에 있습니다. 각 버튼은 recognizerIntent를 호출하여 음성 인식을 수행합니다. 정확한 이미지를 말하면 아이폰 아이콘 Image1과 Image2가 보이지 않게되거나 없어지면 어떤 일을하려합니까?Android OnActivityResult setVisibility

public class Cooking extends Activity implements OnClickListener{ 


    ListView lv; 
    static final int check = 1; 
    static final int checka = 2; 


    int counter_score; 
    int counter_score_b; 
    TextView txView; 
    MediaPlayer ourSong; 
    ImageView display,image1,image2; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     counter_score=0; 
     counter_score_b=0; 
     setContentView(R.layout.cooking); 
     ImageView image1 = (ImageView) findViewById(R.id.image_1_wrong); 
     ImageView image2 = (ImageView) findViewById(R.id.image_2_wrong);   
     initialize(); 





} 


private void initialize() { 
    // TODO Auto-generated method stub 
    lv = (ListView)findViewById(R.id.lvVoiceReturn); 
    txView = (TextView)findViewById(R.id.counter); 

    ImageView image1 = (ImageView) findViewById(R.id.image_1_wrong); 
    ImageView image2 = (ImageView) findViewById(R.id.image_2_wrong); 

    image1.setOnClickListener(this); 
    image2.setOnClickListener(this); 


    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(false); 

} 




    @Override 
    public void onClick(View v) { 
     if(v.getId() == R.id.IVimage_1_wrong){ 
     Intent a = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
     a.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
     a.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); 
     a.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak"); 
     startActivityForResult(a, checka); 
    }else if(v.getId() == R.id.IVimage_2_wrong){ 
     Intent b = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
     b.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
     b.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); 
     b.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak."); 
     startActivityForResult(b, checkb); 
    } 
} 


@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     if (requestCode == checka && resultCode == RESULT_OK){ 
      ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results)); 
      if(results.contains("cooking")|| results.contains("yes really") || results.contains("disease")){ 

       counter_score ++; 
        ///////I though this would make ImageView Image1 not be visible 
       image1.setVisibility(View.GONE);} 
       ourSong = MediaPlayer.create(Cooking.this, R.raw.rightsound2); 
       ourSong.start(); 
       AlertDialog dialogBuilder = new AlertDialog.Builder(this).create(); 
       dialogBuilder.setTitle("Good");dialogBuilder.setMessage("Correct"); 
       dialogBuilder.setIcon(R.drawable.ic_mark); 
       dialogBuilder.show(); 
       Thread timer = new Thread(){ 
        public void run(){ 
         try{ 
         sleep(2500); 
         }catch (InterruptedException e){ 
          e.printStackTrace(); 
         } finally { 





         } 
        } 
       }; 
       timer.start(); 

      }else{ 

       lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results)); 
       counter_score +=0; 

       counter_score_z +=0; 
       ourSong = MediaPlayer.create(Cooking.this, R.raw.wrongsound); 
       ourSong.start(); 
       AlertDialog dialogBuilder = new AlertDialog.Builder(this).create(); 
       dialogBuilder.setTitle("Oops"); 
       dialogBuilder.setMessage("Error msg"); 
       dialogBuilder.setIcon(R.drawable.ic_wrong); 
       dialogBuilder.setButton("Continue", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 


         Intent openMovilTeacherApp = new Intent(Cooking.this, LetterEx.class); 
         startActivity(openMovilTeacherApp); 
         finish(); 
        } 
       }); 
       dialogBuilder.setButton2("Try again", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // TODO Auto-generated method stub 
         dialog.dismiss(); 
        } 
       }); 
       dialogBuilder.show(); 
       Thread timer = new Thread(){ 
        public void run(){ 
         try{ 
         sleep(4000); 
         }catch (InterruptedException e){ 
          e.printStackTrace(); 
         } finally { 



         } 
        } 
       }; 
       timer.start(); 
      } 



     } 
     //////Delivering MAIL///// 
     if (requestCode == checkb && resultCode == RESULT_OK){ 
      ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results)); 
      if(results.contains("delivering mail")|| results.contains("no not really") || results.contains("disease")){ 

       counter_score ++ ; 
       ///////// the next line was supposed to make the image2 no be visible, or gone 
       image2.setVisibility(View.GONE);} 
       counter_score_z +=1; 
       ourSong = MediaPlayer.create(Cooking.this, R.raw.rightsound2); 
       ourSong.start(); 
       AlertDialog dialogBuilder = new AlertDialog.Builder(this).create(); 
       dialogBuilder.setTitle("Good");dialogBuilder.setMessage("Correct"); 
       dialogBuilder.setIcon(R.drawable.ic_mark); 
       dialogBuilder.show(); 
       Thread timer = new Thread(){ 
        public void run(){ 
         try{ 
         sleep(2500); 
         }catch (InterruptedException e){ 
          e.printStackTrace(); 
         } finally { 
          Intent nextAct2 = new Intent(Cooking.this, LetterEx.class); 
          startActivity(nextAct2); 
          finish(); 



         } 
        } 
       }; 
       timer.start(); 

      }else{ 

       lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results)); 
       counter_score +=0; 
       txView.setId(0); 
       counter_score_z +=0; 
       ourSong = MediaPlayer.create(Cooking.this, R.raw.wrongsound); 
       ourSong.start(); 
       AlertDialog dialogBuilder = new AlertDialog.Builder(this).create(); 
       dialogBuilder.setTitle("Oops,"); 
       dialogBuilder.setMessage("Error Msg"); 
       dialogBuilder.setIcon(R.drawable.ic_wrong); 
       dialogBuilder.setButton("Continuar", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 


         Intent openMovilTeacherApp = new Intent(Cooking.this, LetterEx.class); 
         startActivity(openMovilTeacherApp); 
         finish(); 
        } 
       }); 
       dialogBuilder.setButton2("Try again", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         // TODO Auto-generated method stub 
         dialog.dismiss(); 
        } 
       }); 
       dialogBuilder.show(); 
       Thread timer = new Thread(){ 
        public void run(){ 
         try{ 
         sleep(4000); 
         }catch (InterruptedException e){ 
          e.printStackTrace(); 
         } finally { 



         } 
        } 
       }; 
       timer.start(); 
      } 



     } 



     super.onActivityResult(requestCode, resultCode, data); 



    } 

} 

내 cooking.xml

<ImageView android:src="@drawable/small_right_blue_mic" 
     android:id="@+id/image_1_wrong" 
     android:layout_width="68dp" 
     android:layout_height="68dp" 
     android:layout_marginLeft="-150dp" 
     android:layout_marginTop="15dp" 
     android:visibility="invisible"/> 

    <ImageView android:src="@drawable/small_right_blue_mic" 
     android:id="@+id/image_2_wrong" 
     android:layout_width="52dp" 
     android:layout_height="59dp" 
     android:layout_marginLeft="-0dp" 
     android:layout_marginTop="25dp" 
     android:visibility="visible"/> 

오류 로그

08-29 17:15:54.600: E/AndroidRuntime(1953): FATAL EXCEPTION: main 
08-29 17:15:54.600: E/AndroidRuntime(1953): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=222, result=-1, data=Intent { (has extras) }} to activity {com.testapp.app/com.testapp.app.Cooking}: java.lang.NullPointerException 
+0

다음 줄의 오류 로그는 예외가 발생한 코드의 줄 번호입니다. –

+0

흠 .. 오크 닉스가 그걸 보게 될 것입니다 .. – user1446988

+0

롤 예 ..이 라인은 353 라인에 있습니다.이 라인은 ..image1.setVisibility (View.GONE); 그래서 OnActivityResult에 가시성을 설정할 수 없습니까? – user1446988

답변

0

귀하의 문제는 로컬 image1에와 이미지 2를 정의합니다. 이렇게 변경하십시오. findviewbyid()는 한 번만 사용해야합니다. thats enought

public class Cooking extends Activity implements OnClickListener{ 


    ListView lv; 
    static final int check = 1; 
    static final int checka = 2; 


    int counter_score; 
    int counter_score_b; 
    TextView txView; 
    MediaPlayer ourSong; 
    ImageView display,image1,image2; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     counter_score=0; 
     counter_score_b=0; 
     setContentView(R.layout.cooking); 
     image1 = (ImageView) findViewById(R.id.image_1_wrong); 
     image2 = (ImageView) findViewById(R.id.image_2_wrong);   
     initialize(); 





} 


private void initialize() { 
    // TODO Auto-generated method stub 
    lv = (ListView)findViewById(R.id.lvVoiceReturn); 
    txView = (TextView)findViewById(R.id.counter); 


    image1.setOnClickListener(this); 
    image2.setOnClickListener(this); 


    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(false); 

} 
+0

예, 감사합니다! – user1446988

관련 문제