2012-04-13 15 views
-2

私は比較的noobieであり、私のコードで何が間違っているのかを試してみるために出し入れしています。それはreturn;文が到達されることはありません後にサブリストのループ内の到達不能なコード

ListView localListView = (ListView)findViewById(2131361899); 
    localListView.setAdapter(new ArrayAdapter(this, 2130903117, arrayOfString)); 
    localListView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    { 
//Start// 
     public void onItemClick(AdapterView<?> paramAdapterView, View paramView, int paramInt, long paramLong) 
     { 
     String str = ((TextView)paramView).getText().toString(); 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230721))) 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Foreword.class)); 
     while (true) 
     {return; 
     //The Error starts here// 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230723))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter1Section.class)); 
      continue; 
     } 
      //And ends here// 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230728))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter2Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230745))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter3Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230752))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter4Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230759))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter5Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230764))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter6Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230765))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter7Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230768))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter8Section.class)); 
      continue; 
     } 
     if (str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230778))) 
     { 
      ChapterList.this.startActivity(new Intent(ChapterList.this, Chapter9Section.class)); 
      continue; 
     } 
     if (!str.equalsIgnoreCase(ChapterList.this.getResources().getString(2131230722))) 
      continue; 
     ChapterList.this.startActivity(new Intent(ChapterList.this, Appendix.class)); 
     } 
     } 
+2

このコードは、一部のリファクタリングを必死にしています。 1つまたは2つの小さなビットを除いてすべてを繰り返す長いコードブロックを持っているときは、ループと各繰り返しの違いをリストする何らかの種類のデータ構造を考慮する必要があります。 –

+0

確かに、「どうすればこのクリーナーをすることができますか」という質問はありませんでした。 =]初心者のためには、プログラムの流れや課題などの基本を理解するだけでなく、スタイルや清潔さの問題を本当に理解できるようにすることが前提です。 – derekv

答えて

1

コードに細分される基本的なリストビューのためです。 whileループブロック内では、各ステートメントは1度に1つ評価されます。 return;ステートメントが評価されると、メソッド全体が呼び出し元のメソッドにコントロールを「返す」ため、そのメソッドでコードは実行されません。

+0

さらに、最後のifステートメントの最後の行にも同じ問題があります。 'continue;'は実行されたコードの最後の行になり、そのあとの行は決して実行されません。 – David

関連する問題