2013-02-20 31 views
0

我有以下代碼:移動意圖進入if語句

buttons[i].setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
    try{ 
     startActivity(new Intent(names[x][0])); 
    } 
    catch(ActivityNotFoundException e){ 
     if (x==1) { 
     Intent intent = newIntent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")); 
     } 
    } 
    try { 
     startActivity(intent); 
    } catch (ActivityNotFoundException f) { 
     // Google Play Store app not available. 
    } 
    } 
}); 

它開始給intent cannot be resolved to a variable錯誤startActivity(intent)我把Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")if後聲明。在我做這件事之前一切正常。問題是什麼?

+0

請張貼的logcat – QAMAR 2013-02-20 19:57:40

+0

@QAMAR代碼不能編譯,沒有logcat的...... – FoamyGuy 2013-02-20 19:58:53

+2

你應該** **真的格式的代碼...... – JoxTraex 2013-02-20 20:00:28

回答

2

您的變量intent在塊內部定義,因此它僅在塊中可見。如果您想在其他塊中使用它,請將其定義上移。或者將開始活動移動到您的catch區塊。無論如何,你在其他地方沒有任何關係,因爲只有在拋出異常並且有意圖存在的情況下。

還有更多的建議。有通用的Java編碼約定。 非常難難以閱讀您的代碼。我已經爲您格式化並修復了您的問題。這是它應該是什麼樣子。

buttons[i].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     try{ 
      startActivity(new Intent(names[x][0])); 
     } catch(ActivityNotFoundException e) { 
      if (x==1) { 
       Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")); 
       try { 
        startActivity(intent); 
       } catch (ActivityNotFoundException f) { 
       } 
      } 
     } 

    }); 
1

試試這個:

buttons[i].setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     Intent intent; 
     try{ 
      startActivity(new Intent(names[x][0])); 
     } 
     catch(ActivityNotFoundException e){ 
      if (x==1) { 
       intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")); 
      } 
     } 
     try { 
      startActivity(intent); 
     } catch (ActivityNotFoundException f) { 
     // Google Play Store app not available. 
     } 
    } 
    // TODO Auto-generated method stub 
} 
); 

你的意圖是當地的if語句

1

試圖創建的應用程序之前,請先了解一些基本的Java。

在這裏,你只能在catch塊定義意圖:

catch(ActivityNotFoundException e){ 
    if (x==1) {Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")); 
} 

意圖的範圍僅在該塊所以你看到startActivity(intent);會給出一個編譯器錯誤。

Intent intent; 
try{ 
    startActivity(new Intent(names[x][0])); 
} catch(ActivityNotFoundException e) { 
    if (x==1){ 
     intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=uk.co.nickfines.RealCalc")); 
    } 
} 
try { 
    if(intent!=null){ 
     startActivity(intent); 
    } 
} catch (ActivityNotFoundException f) { 
    // Google Play Store app not available. 
} 

if(x==1)看起來很邪惡。它在做什麼?