2017-02-25 69 views
0

我的Android应用程序不显示任何值,即使它有它自己的权利ID。为什么它不起作用?由于不设置TextView

public class MainActivity extends AppCompatActivity { 
int[] marks = {1, 2, 4, 5}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    for (int i = marks.length; i == 0; i--) { 
     int total = 0; 
     total = total + marks[i]; 
     float markAvereage = (float) total/marks.length; 
     setMarkText(i, markAvereage); 
    } 
} 
private void setMarkText(int i, float markAvereage) { 
    String textViewID = "mark" + i; 
    int resID = getResources().getIdentifier(textViewID, "id", getPackageName()); 
    TextView markTv = ((TextView) findViewById(resID)); 
    markTv.setText("Ø "+ (int) markAvereage); 
} 
} 

回答

0
public class MainActivity extends AppCompatActivity { 
    int[] marks = {1, 2, 4, 5}; 
    LinearLayout mLinearLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mLinearLayout = new LinearLayout(this); 
    setContentView(mLinearLayout); 
    mLinearLayout.setOrientation(LinearLayout.VERTICAL); 

    for (int i = 0; i <= marks.length; i++) { 
     float markAverage = (float) i/marks.length; 
     setMarkText(markAverage); 

    } 
} 

    private void setMarkText(float markAverage) { 
     TextView markTv = new TextView(this); 
     markTv.setText(String.valueOf(markAverage)); 
     mLinearLayout.addView(markTv); 
    } 
} 
+0

但即使是这种代码粘贴到你不能因为你必须把3个参数为方法setMarkText,你放在那里仅有2 –

+0

编辑,请尝试上面的代码。 –

+0

resID在循环外部声明,因此无法在for循环内达到 –