相关疑难解决方法(0)

CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及视图

我在Android中遇到以下错误的问题:

CalledFromWrongThreadException;:只有创建视图层次结构的原始线程才能触及其视图

它似乎发生在我尝试更新我的Activity中的Textview时,更新TextView的调用来自我的Activity,但我仍然得到上述错误.

我喜欢这样:

onCreate() - 设置按钮和文本视图.

onStateChange() - 一个关于状态更改通知的侦听器,当收到通知时,如果将TextView更改为说一些不同的文本.

当我收到新文本的通知时,我尝试更改TextView,如下所示:

((TextView)findViewById(R.id.title)).setText("Some Text");
Run Code Online (Sandbox Code Playgroud)

但是我得到了上面的错误.

从谷歌搜索它,似乎我应该使用处理程序来更改TextView或使用AsyncTask?

任何人都可以解释哪一个更好用,为什么?

编辑:新增代码片段:


     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  

            setContentView(R.layout.my);

            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);  

            ((TextView)findViewById(R.id.time)).setText("Hello Text");


            findViewById(R.id.keyboardimage).setOnClickListener(new OnClickListener() {
                public void onClick(View v) {

                    Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"));
                    startActivity(dialIntent);

                        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.FLAG_SOFT_KEYBOARD));
                        dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));       
                }
        });

     }
Run Code Online (Sandbox Code Playgroud)
//CallBacks from running Service

private final ICallDialogActivity.Stub iCallDialogActivity = new ICallDialogActivity.Stub(){

@Override
public void onStateChanged(int callState)
                throws RemoteException {    
            switch(callState){
            case GlobalData.CALL_STATUS_IDLE:

                break;

            case GlobalData.CALL_STATUS_DISCONNECTING:
                byeSetup();
                break;
    } …
Run Code Online (Sandbox Code Playgroud)

android handler android-asynctask

47
推荐指数
2
解决办法
5万
查看次数

添加到SQLiteDatabase时,ListView不会刷新

每当我添加一些内容时SQLiteDatabase,它ListView都没有显示,但如果我完全重新启动应用程序,它就会显示.这是我的主要.java:

package com.gantt.shoppinglist;

import android.app.Dialog;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class ShoppingList extends ListActivity {
    SimpleCursorAdapter adapter = null;
    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final DataHelper dataHelper = new DataHelper(this);
        ListView lv = (ListView) findViewById(android.R.id.list);

        final SQLiteDatabase db = dataHelper.selectAll();
        final Cursor c = db.rawQuery("SELECT DISTINCT oid as …
Run Code Online (Sandbox Code Playgroud)

sqlite android listview cursor simplecursoradapter

3
推荐指数
1
解决办法
2465
查看次数