2013-07-23 145 views
0

當我使用setId(D),我收到此錯誤信息:爲什麼我收到SETID()未定義

The method setId() is undefined for the type MainActivity 

如果我不能在這種情況下使用setId(),有沒有其他的方法來設置一個ID爲TextView動態?

MainActivity:

... 
public void onClick(View view) { 
    ... 
    if (D>=0) {screen();} 
    D=D+1; 
} 

public void screen() { 
    setId(D); 
    if (D==0) { 
    TextView D = (TextView) findViewById(R.id.D); 
    D.setText("the button was pressed: " +D+ "time"); 
    } 
} 
... 

// I dont want to write twenty conditions 
if (D==1) { 
    TextView D1 = (TextView) findViewById(R.id.1);  
    D1.setText("some text" +num); 
    }  
if (D==2) { 
    TextView D2 = (TextView) findViewById(R.id.2);  
    D2.setText("some text" +num) ; 
    } 
if (D==3) { 
    TextView D3 = (TextView) findViewById(R.id.3);  
    D3.setText("some text" +num) ; 
    } 
// and so on... 

activity_main.xml中:

<TextView   
    android:id="@+id/1" 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginTop="20dp" /> 

<TextView   
    android:id="@+id/2" 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginTop="40dp" /> 

<TextView 
    android:id="@+id/3" 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginTop="60dp" /> 

... 
+3

因爲'Activity'沒有'setId()'方法。你需要在'View'或類似的地方使用它。但是,看看你的代碼,我對你在做什麼感到困惑。一個id不應該被用作計數器。 – Geobits

+0

謝謝你的答案。它不會是一個縮短的計數器。每個TextView將根據其他算法由文本和數字填充。 – user2556278

回答

0
... 
public void onClick(View view) {   
...   
     // pass the clicked view 
     if (D>=0) {screen(view);}     
     D=D+1;    
} 

public void screen(View view) { 
    /// call setId on the view that was clicked  
    view.setId(D); 
    if (D==0) { // maybe you want !=0 here instead 
     // D already should exist as a number, notice the name change in next 2 line 
     TextView textview_D = (TextView) findViewById(R.id.D);  
     textview_D.setText("the button was pressed: " +D+ "time"); 
    } 
} 
... 
+0

它看起來可以工作。 「未定義的getId()」消失了,但我得到另一個錯誤:「D無法解析或不是字段」。謝謝 – user2556278

+0

即時通訊不知道哪裏有'D'來自你的代碼,但是最好使用'textview_D'而不是另一個'D'(見編輯) – petey

+0

D應該是TextView ID的引用,如下所示:if D = 1使用android:id =「@ + id/2」執行TextView如果D = 2執行TextView與android:id =「@ + id/2」 – user2556278

2

ID不意味着改變或將被用作變量。對於附加到視圖的元數據,您可能需要查看view.tag http://developer.android.com/reference/android/view/View.html#getTag()

您還可以通過標記檢索視圖。 http://developer.android.com/reference/android/view/View.html#findViewWithTag(java.lang.Object)

請注意,還有其他方式來存儲計數器。通常在你的活動中一個簡單的領域就足夠了。

+0

謝謝。當我寫信給詹姆斯時,我想獲取文本和數字,這些文本和數字將根據另一個函數動態更改。結果(文本/數字)應該在屏幕上逐一顯示,例如十行。 – user2556278

相關問題