Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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/3/android/217.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 安卓错误“;无法在未调用looper的线程内创建处理程序。准备;_Java_Android - Fatal编程技术网

Java 安卓错误“;无法在未调用looper的线程内创建处理程序。准备;

Java 安卓错误“;无法在未调用looper的线程内创建处理程序。准备;,java,android,Java,Android,我有一个名为ShareId的对话框片段和一个名为 当我从ShareId调用SendMapDataService时 获取错误:无法在尚未调用的线程内创建处理程序 活套,准备 共享ID package dialog; import com.rosaloves.bitlyj.Url; import static com.rosaloves.bitlyj.Bitly.*; import java.util.Calendar; import updatedat

我有一个名为ShareId的对话框片段和一个名为 当我从ShareId调用SendMapDataService时 获取错误:无法在尚未调用的线程内创建处理程序 活套,准备

共享ID

    package dialog;

    import com.rosaloves.bitlyj.Url;
    import static com.rosaloves.bitlyj.Bitly.*;

    import java.util.Calendar;

    import updatedata.GPSTracker;
    import updatedata.SendMapDataService;

    import com.example.map.LocationSendActivity;
    import com.example.map.R;

    import android.app.ProgressDialog;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v4.app.DialogFragment;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class ShareId extends DialogFragment {
        Button ok,cancel;
        public static EditText et;
        private double latt,lngt;
        public static String sid,lat,lng,time; 
        ProgressDialog pDialog;
        GPSTracker gps;

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

        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View V = inflater.inflate(R.layout.shareid, container, false);
            ok=(Button)V.findViewById(R.id.button1);
            cancel=(Button)V.findViewById(R.id.button2);
            et=(EditText)V.findViewById(R.id.editText1);
            getDialog().setTitle("Enter Share_id");

            ok.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                sid=et.getText().toString();
                if(sid.length() == 0 ){
                    Toast.makeText(getActivity(),"Please enter share_id",Toast.LENGTH_SHORT).show();
                }else{
                    new ShareTask().execute();
                    }
                }
            });

            cancel.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    getDialog().dismiss();
                }
            }); 
         return V;      
        }

         class ShareTask extends AsyncTask<String, String, String>{

                StringBuffer sbf2=new StringBuffer();
                boolean b=false;
                int ch;
                protected void onPreExecute() {
                    super.onPreExecute();
                    pDialog = new ProgressDialog(getActivity());
                    pDialog.setMessage("Loading Application. Please wait...");
                    pDialog.setIndeterminate(false);
                    pDialog.setCancelable(false);
                    pDialog.show();
                }
                @Override
                protected String doInBackground(String... params) {
                    // TODO Auto-generated method stub

                    // Create download Url
                    Url url = as("adeveloper962", "R_38e071119c3048db892f3aca82b03392")
                            .call(shorten("http://map.rhaasoft.net//locationfile/download.php")); 
                    String ul = url.getShortUrl();
                    sbf2.append("Click for download LocationMapping file"+" "+ul+"\n");
                    //Create location Url
                    gps = new GPSTracker(getActivity());
                     if(gps.canGetLocation()){
                         Log.e("Shareid", "hello");
                            b=true;
                            //get Time
                            time= java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
                            //get latitude longitude
                            latt = gps.getLatitude();
                            lat=String.valueOf(latt);
                            lngt= gps.getLongitude();
                            lng=String.valueOf(lngt);
                            //add link
                            Uri.Builder ur=Uri.parse("http://myapp.com/?").buildUpon();
                            ur.appendQueryParameter("la", lat);
                            ur.appendQueryParameter("ln", lng);
                            ur.appendQueryParameter("ti", time);
                            ur.appendQueryParameter("id", sid);
                            ur.build(); 
                            //shorting url
                            Url url1 = as("adeveloper962", "R_38e071119c3048db892f3aca82b03392")
                                    .call(shorten(ur.toString())); 
                            String ul1 = url1.getShortUrl();
                            //append
                            sbf2.append("Click for show location"+" "+ul1); 
                        }else{
                             b=false;
                        }
                    return null;
                }

                protected void onPostExecute(String file_url) {
                    pDialog.dismiss();
                    getActivity().runOnUiThread(new Runnable() {
                        public void run() {
                            if(b == true){
                                getDialog().dismiss();
                                Intent intent = new Intent(Intent.ACTION_SEND);
                                intent.setType("text/plain");
                                intent.putExtra(Intent.EXTRA_SUBJECT, "Location Shareing");
                                intent.putExtra(Intent.EXTRA_TEXT, sbf2.toString());
                                startActivity(Intent.createChooser(intent, "Select Application for share"));

                                //Send continue data
                                ch=LocationSendActivity.state;
                                if(ch == 0 || ch ==1){
                                    LocationSendActivity.i=1;
                                    LocationSendActivity.u_id=sid;
                                    getActivity().startService(new Intent(getActivity(),SendMapDataService.class));
                                }else{
                                    LocationSendActivity.i=0;
                                    getActivity().stopService(new Intent(getActivity(),SendMapDataService.class));
                                }
                            }else{
                                getDialog().dismiss();
                                gps.showSettingsAlert();
                            }
                        }
                    });
                }

             }

}
包对话框;
导入com.rosaloves.bitlyj.Url;
导入静态com.rosaloves.bitlyj.Bitly.*;
导入java.util.Calendar;
导入updatedata.GPSTracker;
导入updatedata.SendMapDataService;
导入com.example.map.LocationSendActivity;
导入com.example.map.R;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.DialogFragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类ShareId扩展了DialogFragment{
按钮确定,取消;
公共静态文本编辑器;
私人双拉特,lngt;
公共静态字符串sid、lat、lng、时间;
ProgressDialog;
全球定位系统;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图V=充气机。充气(R.layout.shared,container,false);
ok=(按钮)V.findViewById(R.id.button1);
取消=(按钮)V.findViewById(R.id.button2);
et=(EditText)V.findViewById(R.id.editText1);
getDialog().setTitle(“输入共享id”);
ok.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
sid=et.getText().toString();
如果(sid.length()==0){
Toast.makeText(getActivity(),“请输入共享id”,Toast.LENGTH\u SHORT.show();
}否则{
新建ShareTask().execute();
}
}
});
cancel.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
getDialog().discouse();
}
}); 
返回V;
}
类ShareTask扩展了AsyncTask{
StringBuffer sbf2=新的StringBuffer();
布尔b=假;
int-ch;
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(getActivity());
setMessage(“正在加载应用程序。请稍候…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
//创建下载Url
Url Url=as(“开发人员962”,“R_38e071119c3048db892f3aca82b03392”)
.呼叫(缩短)http://map.rhaasoft.net//locationfile/download.php")); 
字符串ul=url.getShortUrl();
sbf2.append(“单击下载位置映射文件”+“”+ul+“\n”);
//创建位置Url
gps=新的GP斯特拉克(getActivity());
if(gps.canGetLocation()){
Log.e(“shared”、“hello”);
b=正确;
//有时间
time=java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
//获取经纬度
latt=gps.getLatitude();
lat=字符串的值(latt);
lngt=gps.getLongitude();
lng=字符串的值(lngt);
//添加链接
Uri.Builder ur=Uri.parse(“http://myapp.com/?)。buildon();
ur.附录参数(“la”,lat);
ur.附录参数(“ln”,液化天然气);
ur.附录查询参数(“ti”,时间);
ur.附录查询参数(“id”,sid);
ur.build();
//短网址
Url url1=as(“开发者962”,“R_38e071119c3048db892f3aca82b03392”)
.call(shorten(ur.toString());
字符串ul1=url1.getShortUrl();
//附加
sbf2.append(“单击以显示位置”+“”+ul1);
}否则{
b=假;
}
返回null;
}
受保护的void onPostExecute(字符串文件\u url){
pDialog.disclose();
getActivity().runOnUiThread(新的Runnable()){
公开募捐{
如果(b==true){
getDialog().discouse();
意向意向=新意向(意向.行动\发送);
intent.setType(“文本/普通”);
intent.putExtra(intent.EXTRA_主题,“位置共享”);
intent.putExtra(intent.EXTRA_TEXT,sbf2.toString());
    package updatedata;

import java.util.Calendar;

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

import com.example.map.FunctionCall;
import com.example.map.LocationSendActivity;

import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.util.Log;
import android.widget.Toast;

public class SendMapDataService extends Service  {
    private Handler handler;
    private String id1,lat1,lng1,time1;
    private double lat,lng;
    GPSTracker gps;
    private long total,val,min;


    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        gps=new GPSTracker(getApplicationContext());
        return null;
    }

    public int onStartCommand(Intent intent, int flags, int startId) {

        id1=LocationSendActivity.u_id;
        // Log.e("Myid", String.valueOf(LocationSendActivity.u_id));

        // get time from time interval
        if(min == 1){
         val=15;    
        }else if(min == 2){
         val=30;    
        }else if(min == 3){
         val=60;    
        }else if(min == 4){
         val=5*60;  
        }else if(min == 5){
         val=10*60; 
        }
        else{
             val=15;    
            }
        total=(long) (val*1000);
        // Log.e("Seconds", String.valueOf(total));

        // Start handler
        handler=new Handler();
        handler.postDelayed(runn, 1000);
       // Looper.loop();

        return START_STICKY;
        }

    Runnable runn = new Runnable() {
           @Override
           public void run() {
               gps=new GPSTracker(getApplicationContext());
               if(gps.canGetLocation()){
               lat = gps.getLatitude();
               lng = gps.getLongitude();
               time1=java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
               lat1=String.valueOf(lat);
               lng1=String.valueOf(lng);

               new SendUpdatedData(id1,lat1,lng1,time1).execute(); 
               handler.postDelayed(this, total);
               }else{
                   gps.showSettingsAlert();   
               }
           }
        };

    public void onDestroy() {
        super.onDestroy();
        handler.removeCallbacks(runn,null);
        Toast.makeText(this, "Data Send Service Destroyed", Toast.LENGTH_LONG).show();
    }


    class SendUpdatedData extends AsyncTask<String, String, String>{
        String id2,lat2,lng2,time2;
        int success,val,update;

        public SendUpdatedData(String id, String lat,String lng,String time) {
            // TODO Auto-generated constructor stub
            this.id2=id;
            this.lat2=lat;
            this.lng2=lng;
            this.time2=time;
        }

        protected void onPreExecute(){
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            FunctionCall fc=new FunctionCall();
            JSONObject jo=fc.sendUpdateData(id2,lat2,lng2,time2);
            try{
                 success=jo.getInt("success");
                 update=jo.getInt("update");

            }catch(JSONException e){
                e.printStackTrace();
            }
            return null;
        }

        protected void onPostExecute(String file_url){

            if (success==1){
                if(update == 1){
                    Toast.makeText(getApplication(),"Data Updated", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(getApplication(),"New Data Inserted", Toast.LENGTH_SHORT).show();
                }
            }   
            else{   
                Toast.makeText(getApplication(),"Data Not Send", Toast.LENGTH_SHORT).show();
            }

        }

    }


}
02-06 12:16:43.740: W/System.err(15622): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
02-06 12:16:43.740: W/System.err(15622):    at android.os.Handler.<init>(Handler.java:121)
02-06 12:16:43.740: W/System.err(15622):    at android.location.LocationManager$ListenerTransport$1.<init>(LocationManager.java:137)
02-06 12:16:43.750: W/System.err(15622):    at android.location.LocationManager$ListenerTransport.<init>(LocationManager.java:137)
02-06 12:16:43.750: W/System.err(15622):    at android.location.LocationManager._requestLocationUpdates(LocationManager.java:708)
02-06 12:16:43.750: W/System.err(15622):    at android.location.LocationManager.requestLocationUpdates(LocationManager.java:630)
02-06 12:16:43.750: W/System.err(15622):    at updatedata.GPSTracker.getLocation(GPSTracker.java:65)
02-06 12:16:43.750: W/System.err(15622):    at updatedata.GPSTracker.<init>(GPSTracker.java:44)
02-06 12:16:43.750: W/System.err(15622):    at dialog.ShareId$ShareTask.doInBackground(ShareId.java:96)
02-06 12:16:43.750: W/System.err(15622):    at dialog.ShareId$ShareTask.doInBackground(ShareId.java:1)
02-06 12:16:43.750: W/System.err(15622):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
02-06 12:16:43.750: W/System.err(15622):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-06 12:16:43.750: W/System.err(15622):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-06 12:16:43.750: W/System.err(15622):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
02-06 12:16:43.750: W/System.err(15622):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
02-06 12:16:43.750: W/System.err(15622):    at java.lang.Thread.run(Thread.java:1096)