Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Android 对于类型new Thread(){}未定义runOnUiThread(new Runnable(){})_Android - Fatal编程技术网

Android 对于类型new Thread(){}未定义runOnUiThread(new Runnable(){})

Android 对于类型new Thread(){}未定义runOnUiThread(new Runnable(){}),android,Android,看看这个部分: runOnUiThread(new Runnable() { 我有个问题: The method runOnUiThread(new Runnable(){}) is undefined for the type new Thread(){} 所以我理解runOnUiThread必须来自一项活动。但我不确定这将如何实施?它是首选项/设置视图中的一个对话框 ChannelsDialogPreference的形式如下:pref_channels.xml <Preferenc

看看这个部分:

runOnUiThread(new Runnable() {
我有个问题:

The method runOnUiThread(new Runnable(){}) is undefined for the type new Thread(){}
所以我理解runOnUiThread必须来自一项活动。但我不确定这将如何实施?它是首选项/设置视图中的一个对话框

ChannelsDialogPreference的形式如下:pref_channels.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <com.example.tvrplayer.ChannelsDialogPreference
        android:title="@string/pref_channels_dialog_title"
        android:dialogMessage="@string/pref_channels_dialog_message"              
        android:negativeButtonText="test"/> 

</PreferenceScreen>

频道对话首选项:

package com.example.tvrplayer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class ChannelsDialogPreference extends DialogPreference {

    public static Context ctx;
//    Activity activity;

    public ChannelsDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);

        this.ctx = context;
    }


    @Override
    protected View onCreateDialogView() {

//      Set loading spinner

//      Start looking for channels

//      When complete, show channels





        LayoutInflater inflater = ((SettingsActivity) ctx).getLayoutInflater();
        final View vw = inflater.inflate(R.layout.channel_content_view, null);
//        Do this in a new Thread


        Thread thread = new Thread()
        {
            @Override
            public void run() {
                try {
                    final JSONArray channels;
                    String username = null;
                    String linkid = null;
                    final String apiurl = "http://192.168.2.136:8080";
                    final String channelID = null;
                    final DatabaseHandler db = new DatabaseHandler(ctx);
                    List<User> users = db.getAllUsers();  
                    for (User cn : users) {
                         linkid = cn.getLinkID();
                         username = cn.getUserName();
                     }
                     db.close();

                    final ArrayList< HashMap < String, String > > channelList = new ArrayList < HashMap < String, String > > ();
                    try {

                        if ( channelID != null ) {
                            channels = Json.getJson(apiurl + "/rest/channel/"+ linkid +"/"+ username + "/" + channelID, "GET");
                            Log.i("CHANNELS", channels.toString());
                            for (int i=0; i < channels.length(); i++) { 
                                JSONObject json_data = channels.getJSONObject(i);
                                String name = json_data.getString("Name");
                                String channelid = json_data.getString("ChannelID");
                                HashMap<String, String> channelObject = new HashMap<String, String>();
//                                  if ( json_data.getString("ParentPath") == "" ) {
                                channelObject.put("id", channelid);
                                channelObject.put("name", name);
                                channelList.add(channelObject);
//                                  }
                            }
                        } else {
                            channels = Json.getJson(apiurl + "/rest/channel/"+ linkid +"/"+ username, "GET");
                            Log.i("CHANNELS", channels.toString());
                            for (int i=0; i < channels.length(); i++) { 
                                JSONObject json_data = channels.getJSONObject(i);
                                String name = json_data.getString("Name");
                                String channelid = json_data.getString("ChannelID");
                                HashMap<String, String> channelObject = new HashMap<String, String>();
                                Log.i("CHANNEL LEN", ""+ json_data.getString("ParentID").length());
                                if ( json_data.getString("ParentID").length() < 32 ) {
                                    channelObject.put("id", channelid);
                                    channelObject.put("name", name);
                                    channelList.add(channelObject);
                                }
                            }
                        }
                        runOnUiThread(new Runnable() {
                             public void run() {
                                 HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(ctx, channelList);
                                    ListView lv = (ListView) vw.findViewById(R.id.list);
                                    lv.setAdapter(adapter);
                                    lv.isClickable();
                                    lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() 
                                    {
                                        @Override
                                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
                                        {
                                            Log.i("CLICKED ON LV ITEM", "YEA");
                                        }
                                    });
                            }
                        });


                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }                               
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };

        thread.start(); 



//        new ChannelHandler().execute(apiurl, username, linkid, vw, ctx, channelID);
        return vw;
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);
        persistBoolean(positiveResult);
    }

    @Override
    public void onClick (DialogInterface dialog, int which)
    {
        super.onClick(dialog, which);
//
        Log.v("which", Integer.toString(which));
//
        if(which == -1) { //Clear all
//          new ChannelHandler().execute(apiurl, username, linkid, vw, ctx, channelID);
        }
    }


}
package com.example.tvrplayer;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.preference.DialogPreference;
导入android.util.AttributeSet;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListView;
公共类通道DialogPreference扩展了DialogPreference{
公共静态上下文;
//活动;
公共频道DialogPreference(上下文、属性集属性){
超级(上下文,attrs);
this.ctx=上下文;
}
@凌驾
受保护的视图onCreateDialogView(){
//设置加载微调器
//开始寻找频道
//完成后,显示频道
LAYOUTINGFLATER充气机=((设置活动)ctx).getLAYOUTINGFLATER();
最终视图vw=充气机。充气(R.layout.channel\u content\u视图,空);
//在新线程中执行此操作
线程线程=新线程()
{
@凌驾
公开募捐{
试一试{
最终JSONArray通道;
字符串username=null;
字符串linkid=null;
最终字符串APIRL=”http://192.168.2.136:8080";
最终字符串channelID=null;
final DatabaseHandler db=新的DatabaseHandler(ctx);
List users=db.getAllUsers();
for(用户cn:用户){
linkid=cn.getLinkID();
username=cn.getUserName();
}
db.close();
最终ArrayList>channelList=新ArrayList>();
试一试{
if(channelID!=null){
channels=Json.getJson(apirl+“/rest/channel/”+linkid+“/”+username+“/”+channelID,“GET”);
Log.i(“CHANNELS”,CHANNELS.toString());
对于(inti=0;i((Activity) context).runOnUiThread(new Runnable() {
    @Override
    public void run() {
        //Code for the UiThread
    }
});
getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
        //Code for the UiThread
    }
});
Button confirm = (Button) dialog.findViewById(R.id.btn_confirm);
confirm.setOnClickListener(new OnClickListener() 
{

    @Override
    public void onClick(View v)
    {
        your call to method...
    }
});