2017-09-29 68 views
1

早上好!Android/Java簡化顯示方法

我對學習android和Java的新東西很陌生,我正在構建一個應用程序來跟蹤兩個團隊之間的比賽的橄欖球比分。它工作正常,但我爲我寫的代碼來了惱火。基本上,我爲每個onClick調用了一個不同的方法 - 我認爲這很好,但每種方法都會調用2種不同的顯示方法,如果可以的話,我正在優化這些方法。

例子:

public void try_home(View v) { 
    scoreHome += 5; 
    tryHome++; 
    displayForTeamA(scoreHome); 
    displayTryHome(tryHome); 
} 

我的復位更是雪上加霜:

public void reset(View v) { 
    displayForTeamA(scoreHome = 0); 
    displayForTeamB(scoreAway = 0); 
    displayTryHome(tryHome = 0); 
    displayTryAway(tryAway = 0); 
    displayConvertHome(convertHome = 0); 
    displayConvertAway(convertAway = 0); 
    displayFieldHome(fieldHome = 0); 
    displayFieldAway(fieldAway = 0); 
    displayPenHome(penHome = 0); 
    displayPenAway(penAway = 0); 

} 

原來這就是我想要做的,但顯然是行不通的,因爲findViewById()希望是一個int ..我在正確的軌道上,有沒有辦法做到這一點?

public void display(int val, String textView) { 
    String viewID = "R.id." + textView; 
    TextView scoreView = (TextView) findViewById(viewID); 
    scoreView.setText(String.valueOf(val)); 
} 

希望我有道理,我的問題很簡潔! 預先感謝您的任何和所有幫助

回答

0
int viewID = context.getResources().getIdentifier(textView, "id", context.getPackageName()) 

應該做的伎倆(更換你display方法中的第一行)。

+0

太棒了!上下文是什麼?我沒有這個變種,我假設textview是傳遞給該方法的字符串?謝謝! –

+0

「display」方法在哪裏?如果它在你的Activity中,只需使用'this'而不是'context',如果它在別的地方就需要引用你的'Activity'。見:https://stackoverflow.com/a/15488321/3356270 – kalabalik

+0

啊,太棒了,是啊,我只有一個類,MainActivity,再次感謝! (不能+1你的答案,因爲noob,對不起) –