2013-09-01 1 views
0

내 애플리케이션의 강제 종료를 피하는 데 문제가 있습니다. 로드 버튼을 클릭하면 데이터베이스에있는 모든 데이터가로드됩니다. 그러나 데이터베이스에 데이터가 없으면 db에 반입 할 데이터가 없음을 나타내는 축배를 표시하려고합니다.db에서 가져올 데이터가없는 경우 강제 닫기를 피하는 방법

 save.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 

       db.addContact(new PlayerData(name,score)); 
       Log.d("Insert: ", "Inserting .."); 

      } 
     }); 



      load.setOnClickListener(new OnClickListener(){ 

       public void onClick(View v) { 

        List<PlayerData> contacts = db.getAllContacts(); 
        //check to ensure there are users 
        if(contacts.size()==0) 
         try { 
          throw new Exception(); 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        PlayerData player = contacts.get(0); 
        String showName = player.getName(); 
        int showScore = player.getscore(); 
        Log.d("Getting:", showName); 
        Log.d("Getting:", Integer.toString(showScore)); 
        saved.setText("Player Name: "+showName+" Player Score: "+showScore); 

       } 
      }); 

답변

1

귀하의 문제는 여기에 있습니다 :

if(contacts.size()==0) 
    try { 
     throw new Exception(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

코드는 전혀 접촉이없는 사실을 무시하고 존재하지 않는 연락처 말했다에 작업을 수행하려고합니다. 대신, if 문이의 토스트 표시를하고, 다른 블록의 코드의 나머지 부분을 실행한다 : 여기

load.setOnClickListener(new OnClickListener(){ 

     public void onClick(View v) { 

      List<PlayerData> contacts = db.getAllContacts(); 
      //check to ensure there are users 
      if(contacts.size()==0) { 
       String text = "No contacts in db"; 
       Toast.makeText(text, Toast.LENGTH_SHORT).show(); 
      } else { 
       PlayerData player = contacts.get(0); 
       String showName = player.getName(); 
       int showScore = player.getscore(); 
       Log.d("Getting:", showName); 
       Log.d("Getting:", Integer.toString(showScore)); 
       saved.setText("Player Name: "+showName+" Player Score: "+showScore); 
      } 
     } 
    }); 
0

것은 당신이 할 수있는 것입니다 :

  1. 당신의 List<PlayerData>

  2. 를 인스턴스화 데이터베이스

  3. 검사에서

  4. 데이터로드 당신은 당신의 List<PlayerData>의 데이터가있는 경우. 여부는 null를 확인하거나 size()==0이 논리에 따라 달라집니다 당신은 비어있는 경우, 함께 플레이 할 선수가 없다는 Toast을 표시 :

  5. 을 구현했습니다. 그렇지 않으면 네가 원하는대로해라.


코드 :

load.setOnClickListener(new OnClickListener(){ 
    public void onClick(View v) { 

     List<PlayerData> contacts = db.getAllContacts(); 
     //check to ensure there are users 
     if(contacts == null || contacts.size() == 0){ 
      // do something. 
     }else{ 
      // start the game 
      PlayerData player = contacts.get(0); 
      String showName = player.getName(); 
      int showScore = player.getscore(); 
      Log.d("Getting:", showName); 
      Log.d("Getting:", Integer.toString(showScore)); 
      saved.setText("Player Name: "+showName+" Player Score: "+showScore); 
     } 
    } 
}); 
관련 문제