2013-10-11 61 views
2

我正在運行一個for-loop並生成應該可點擊的TextViews,因爲我想先啓動一個intent並將url作爲參數以及源代碼傳遞。獲取動態生成的TextView文本點擊它時

所以,我已經試過這

articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
articleURL[i].setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //System.out.println(articleURL[v.getId()].getText().toString()); 
     System.out.println(v.getId()); 
    } 
}); 

我遇到的問題是,v.getId()始終爲0。當我使用註釋代碼

System.out.println(articleURL[v.getId()].getText().toString()); 

我得到一個例外說

java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1 

我只需要我點擊的TextView的內容。我到底如何得到它? articleURL [i]不起作用,因爲他當時不知道我。 v.getId()如何總是-1?無論我點擊哪一個?

這下面是完整的for循環

TextView articleURL = new TextView[hashMapSize]; 
for (int i = 0; i < hashMapSize; i++) { 
    articleURL[i] = new TextView(getActivity()); 
    articleURL[i].setPaintFlags(articleURL[i].getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
    articleURL[i].setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      System.out.println(articleURL[v.getId()].getText().toString()); 
      //System.out.println(v.getId()); 
     } 
    }); 
} 

回答

10

你真正得到的參數的查看。只需將它轉換爲TextView的,並呼籲getText()

public void onClick(View v) { 
    Log.d("text",((TextView) v).getText().toString()); 
} 

也不要使用System.out.println。這是Android,而不是桌面Java,而且編碼android是一個巨大的區別於普通的Java。你應該得到一本關於Android的書並閱讀它,否則你的應用程序很快就會崩潰,你將無法修復它們。

+0

謝謝,鑄造它的工作。 ;) – Musterknabe

0

你可以嘗試以下方法:

View.OnClickListener listener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     System.out.println(((TextView)v).getText()); 
    } 
}; 
// ... some loop 
articleURL[i].setOnClickListener(listener); 

如果你也想獲得項目的索引,試試這個:

View.OnClickListener listener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     System.out.println(v.getTag()); 
    } 
}; 
// ... some loop 
articleURL[i].setTag(i); 
articleURL[i].setOnClickListener(listener); 
0

試試這個..

以此爲globel

TextView articleURL[]; 

然後我nitial像下面

articleURL = new TextView[hashMapSize]; 

和articleURL然後如果你的擴展fragement指低於

articleURL[i] = new TextView(getActivity()); 

使用擴展活動意味着

articleURL[i] = new TextView(this); 

System.out.println(((TextView)v).getText().toString()); 
相關問題