SORU
7 Mayıs 2013, Salı


runOnUiThread parçası

Parça için bir etkinliğe dönüştürmek için çalışıyorum. runOnUiThreadhata işareti. geçmiş:

GoogleActivityV2 Faaliyet uzanır. runOnUiThread sınıfta ExecuteTask. sınıf ExecuteTask aktivite iç içe.

(Çalıştır Tamam) şimdi :

GoogleActivityV2 Parçası uzanır. runOnUiThread sınıfta ExecuteTask. sınıf ExecuteTask aktivite iç içe. (Hata runOnUiThread)

işte benim kod

public class GoogleActivityV2 extends SherlockMapFragment implements OnMapClickListener , OnMapLongClickListener , OnCameraChangeListener , TextWatcher {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.activity_googlev2, container, false);
        Init();
        adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line);
        textView = (AutoCompleteTextView) getView().findViewById(R.id.autoCompleteTextView1);
        return rootView;
    }

    public void onCameraChange(CameraPosition arg0){
        // TODO Auto-generated method stub
    }

    public void onMapLongClick(LatLng arg0){
        llLoc = arg0;
        stCommand = "onTouchEvent";
        lp = new ExecuteTask();
        lp.execute();
    }

    public void onMapClick(LatLng arg0){
        // TODO Auto-generated method stub
    }

    class ExecuteTask extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            if(stCommand.compareTo("AutoCompleteTextView") != 0) {
                pDialog = new ProgressDialog(getActivity());
                pDialog.setMessage(Html.fromHtml("<b>Search</b><br/>Loading ..."));
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }
        }

        protected String doInBackground(String ... args){
            do something
            return null;
        }

        @Override
        protected void onPostExecute(String file_url){
            if(stCommand.compareTo("AutoCompleteTextView") != 0) pDialog.dismiss();
            runOnUiThread(new Runnable() {
                public void run(){
                    do something
                }
            });
        }
    }
    public void afterTextChanged(Editable s){
        // TODO Auto-generated method stub
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after){
        // TODO Auto-generated method stub
    }

    public void onTextChanged(CharSequence s, int start, int before, int count){
        // TODO Auto-generated method stub
    }
}

hata diyor ki: Eclipse Error

bu hatayı nasıl düzeltebilirim?

CEVAP
7 Mayıs 2013, Salı


Bu deneyin: getActivity().runOnUiThread(new Runnable...

Çünkü:

1) runOnUiThread çağrı this örtülü AsyncTask, parçası değil dir.

2) Fragment runOnUiThread yok

(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/app/Fragment.java?av=f)

ancak Activity:

(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/app/Activity.java?av=f)

Bu sadece ana konu üzerinde değil, eğer yoksa zaten ana konu üzerinde iseniz Runnable çalıştırır ve Handler bir kullandığına dikkat edin. Eğer this aslında çok kolay içeriği hakkında endişelenmene gerek yok, eğer senin parçası Handler bir uygulayabilirsiniz:

http://developer.android.com/reference/android/os/Handler.html

EDİT: @rciovati haklı, zaten ana konu üzerinde onPostExecute de ben.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • theKGB65

    theKGB65

    24 Aralık 2007