如何将textview设置为andrioid中的方法输出?

我刚刚开始使用android studio,目前我正在使用罗马数字翻译应用程序。 应用程序的界面如下所示: 应用程序界面

用户将使用键盘输入一个整数,该整数将显示在上面显示的TextView上。 当他们点击转换按钮时,它将获取他们输入的整数并将其转换(如果包含字符串或字符,程序将能够捕获输入)。 然后,在用户点击“转换”按钮后,应用程序会将TextView重置为结果。

目前,我的主要活动包含按钮的onClickListeners和翻译的单独翻译方法。 我的问题是“转换”按钮我不知道如何从转换器方法获取输入并在完成转换时将其设置为TextView。 以下是我的代码示例:

“转换”按钮监听器 – `

convert.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { TextView numeralInput = (TextView) findViewById(R.id.textView); String intValue = numeralInput.getText().toString(); try{ int integer = Integer.parseInt(intValue); if (integer > 0 && integer <= 4999){ translator(integer); }else{ numeralInput.setText("Please enter an integer between 0 and 4,999."); } }catch(NumberFormatException e){ numeralInput.setText("Invalid input try again."); } } } ); 

`

译者方法 – `

 public static void translator(int integer) { LinkedList stack = new LinkedList(); // if (integer > 0 && integer <= 4999) { //ArrayList placement = new ArrayList(); int place = (int) Math.log10(integer); for (int i = 0; i  0){ //System.out.println(integer); int placeOfValue = integer % 10; //stack.push(placeOfValue); //System.out.print(stack); //System.out.print(placeOfValue +":" + i); String placement = ""; switch (i) { case 0: placement = ones(placeOfValue); break; case 1: placement = tens(placeOfValue); break; case 2: placement = hundreds(placeOfValue); break; case 3: placement = thousands(placeOfValue); break; default: break; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { stack.push(placement); } integer = integer / 10; //System.out.print(placement); // System.out.println(placement.size()); //} // for(int j = 0; j = Build.VERSION_CODES.GINGERBREAD) { System.out.print(stack.pop()); } } // } else { // System.out.println("Please enter an integer between 0 and 4,999."); // } } } 

`

翻译器内部的其他方法类似于罗马数字的库,每个方法都包含每个位置值的数字,如下所示。

成千上万的方法 – `

 public static String thousands(int integer) { String thouValue = ""; switch (integer) { case 1: thouValue = "M"; //System.out.print("M"); break; case 2: thouValue = "MM"; //System.out.print("MM"); break; case 3: thouValue = "MMM"; //System.out.print("MMM"); break; case 4: thouValue = "MMMM"; //System.out.print("MMMM"); break; default: thouValue = ""; break; } return thouValue; } 

`

使您的translator()方法返回包含最终输出的字符串。

所以在该方法的while语句之前,声明一个字符串,如String result = null; 并在循环中将弹出的值附加到此变量,如result += stack.pop()

现在,你调用translator(integer)方法的地方,做numeralInput.setText(translator(integer))而不是translator(integer)

您需要使TextView成为类成员并在oncreate包中初始化它,以便您可以访问活动中其他位置的textview。

 TextView numeralInput; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act_main); numeralInput = (TextView) findViewById(R.id.textView); convert.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { String intValue = numeralInput.getText().toString(); try{ int integer = Integer.parseInt(intValue); if (integer > 0 && integer <= 4999){ translator(integer); }else{ numeralInput.setText("Please enter an integer between 0 and 4,999."); } }catch(NumberFormatException e){ numeralInput.setText("Invalid input try again."); } } } );