编译器说ppp只能被创建它的线程触及,尽管它已在上面创建了一行。 可能是什么问题?
public void init(){
new Thread(new Runnable() {
@Override
public void run() {
try{
elet = 10;
InetAddress addr;
Socket sock = new Socket("46.101.150.158", 1035);
addr = sock.getInetAddress();
DataOutputStream ki = new DataOutputStream(sock.getOutputStream());
ki.write('a');
ki.flush();
final BufferedReader be = new BufferedReader(new InputStreamReader(sock.getInputStream()));
lekert = String.valueOf(be.readLine());
Log.d("Szo",lekert);
kiir = "";
word = lekert;
tomb = new Boolean[lekert.length()-1];
for(int i = 0; i < lekert.length()-1;++i){
tomb[i] = false;
}
tomb[0] = true;
tomb[lekert.length()-2] = true;
for(int i = 0 ; i < lekert.length()-1;++i){
if(tomb[i]){
kiir += lekert.charAt(i);
}else{
kiir += '_';
}
}
TextView ppp = (TextView)findViewById(R.id.textView);
ppp.setText(kiir);
Button check = (Button)findViewById(R.id.button);
if(elet == 0){
check.setVisibility(View.INVISIBLE);
}
答案 0 :(得分:2)
尽管它已在
上面创建了一行
不,它没有。你打电话给findViewById()
。 findViewById()
不会创建任何内容。它从现有的视图层次结构中找到小部件。该视图层次结构是在其他位置创建的(例如,setContentView()
您活动的onCreate()
方法中的AsyncTask
。
切换为使用onPostExecute()
(使用TextView
中的小部件更新代码)或以其他方式安排更新主应用程序主题上的Button
和{{1}}。< / p>
答案 1 :(得分:0)
如果你想调用ui方法,你必须调用$scope.todoList = [];
if (localStorage.getItem("mytodos") === null) {
localStorage.setItem("mytodos", angular.toJson($scope.todoList));
} else {
$scope.todoList = angular.fromJson(localStorage.getItem("mytodos"));
}
。所以尝试从这个
runOnUiThread
到这个
TextView ppp = (TextView)findViewById(R.id.textView);
ppp.setText(kiir);
Button check = (Button)findViewById(R.id.button);
if(elet == 0){
check.setVisibility(View.INVISIBLE);
}