这是我的代码:
package org.skaza.pocketamati.CalculatorActivities;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.skaza.pocketamati.R;
public class SizeViolinActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_size_violin);
setTitle(getResources().getText(R.string.sizeViolin));
}
String violinSize = "NaN";
double bodyLength = 0;
int indicator = 0;
public void Compute(View v) {
InputMethodManager inputManager = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
EditText bodyLengthText = (EditText) findViewById(R.id.sizeViolinInput);
if (bodyLengthText
.getText()
.toString()
.matches("\\d+(\\.\\d*)?|\\.\\d+")) {
bodyLength = Double.parseDouble(bodyLengthText
.getText()
.toString());
} else {
Context context = getApplicationContext();
CharSequence text = "Incorrect value";
int length = Toast.LENGTH_SHORT;
Toast error = Toast.makeText(context, text, length);
error.show();
}
if (bodyLength >= 280 && bodyLength < 300) {indicator = 1;}
if (bodyLength >= 300 && bodyLength < 320) {indicator = 2;}
if (bodyLength >= 320 && bodyLength <= 340){indicator = 3;}
if (bodyLength >= 350 && bodyLength <= 360){indicator = 4;}
switch (indicator){
case 1: violinSize = "1/4"; break;
case 2: violinSize = "1/2"; break;
case 3: violinSize = "3/4"; break;
case 4: violinSize = "4/4"; break;
default: break;}
}
TextView sizeTextView = (TextView) findViewById(R.id.sizeView);
sizeTextView.setText(violinSize);
sizeTextView.invalidate();
}
唯一两行似乎在整个应用程序中不起作用
sizeTextView.setText(violinSize);
sizeTextView.invalidate();
这两个在我的应用程序的其他部分工作,但在这里不起作用。我必须使缓存无效并重新启动,因为我的所有符号都是这样的。现在我被这两个问题困扰,无法在互联网上找到解决方案。
最佳答案
首先您必须在方法内部而不是在主类定义中初始化变量:
TextView sizeTextView = (TextView) findViewById(R.id.sizeView);
因此在 onCreate 方法内设置 sizeTextView = (TextView) findViewById(R.id.sizeView);
,然后在方法内进行下一次调用
关于java - Android - .setText() 和 invalidate() 不能仅在一个类中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36576683/