Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-.setText()和invalidate()don';I don’我不能只上一节课_Java_Android - Fatal编程技术网

Java Android-.setText()和invalidate()don';I don’我不能只上一节课

Java Android-.setText()和invalidate()don';I don’我不能只上一节课,java,android,Java,Android,这是我的代码: 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; impo

这是我的代码:

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();

}

这两个在我的应用程序的其他部分工作,但不在这里。我必须使缓存失效并重新启动,因为我所有的符号都是这样的。现在我被这两个问题困扰着,无法在互联网上找到解决方案。

从哪里调用Compute?如果它是从线程或类似的东西调用的,您需要在UI线程上使用setText。

从哪里调用Compute?如果它是从线程或类似的东西调用的-您需要在UI线程上使用setText。

首先,您必须在方法内部启动变量,而不是在主类定义中:

  TextView sizeTextView = (TextView) findViewById(R.id.sizeView);

因此设置
sizeTextView=(TextView)findViewById(R.id.sizeView)在onCreate方法内部,然后在方法内部执行下一次调用

首先必须在方法内部启动变量,而不是在主类定义中:

  TextView sizeTextView = (TextView) findViewById(R.id.sizeView);

因此设置
sizeTextView=(TextView)findViewById(R.id.sizeView)在onCreate方法内,然后在方法内执行下一次调用

问题不在于设置文本,在它上面的开关中,有一个不应该存在的右括号。这会阻止你建造房屋

    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;} // <- this '}' right here can be removed
    }

问题不在于设置文本,在右上方的开关中,有一个不应该存在的右括号。这会阻止你建造房屋

    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;} // <- this '}' right here can be removed
    }


我说的“这两个”是指.setText()和invalidate(),你得到了stacktrace还是没有看到任何变化?我不确定我的回答是否正确,但我甚至没有编译或构建它,因为它无法解决我的符号。看到问题了,添加了一个回答“这两个”我是指.setText()和invalidate())你有stacktrace吗,或者你没有看到任何变化?我不确定我的回答是否正确,但我甚至没有编译或构建它,因为它无法解决我的Symbol看到问题了吗,添加了一个答案这是一种点击方式这是一种点击方式你能看一下吗:这一个非常好用,我基本上是照搬过来的。而且,当我按照你的建议做的时候,它根本不起作用still@Sjalistragit代码在compute方法中插入了setText()一个invalidate(),但是您在该方法之外做了,在main类定义中,正如我所说的,只要将您的调用移动到一个方法中,您的问题就会得到解决,嘿,你能看一下吗:这一个非常好用,我基本上是照搬过来的。而且,当我按照你的建议做的时候,它根本不起作用still@Sjalistragit代码在compute方法中插入了setText()一个invalidate(),但是您在该方法之外做了,在main类定义中,正如我所说的,只要将您的调用移动到一个方法中,您的问题就会得到解决,这实际上是因为set text和invalidate不在计算方法内,但是的,这是一个括号问题。这实际上是因为set text和invalidate不在计算方法内,但是的,这是一个括号问题