2017-02-15 3 views
0

からメソッドを解決することはできません私はArrayAdapterを作成する必要がありますが、私はそれがcannot resolve method getActivity()getActivityがフラグメント

 import java.io.BufferedReader; 
     import java.io.IOException; 
     import java.io.InputStreamReader; 
     import java.net.ProtocolException; 
     import java.net.URL; 
     import java.util.ArrayList; 
     import android.widget.ArrayAdapter; 
     import java.net.HttpURLConnection; 
     import java.lang.Void; 
     import android.widget.ListView; 
     import android.os.AsyncTask; 
     import android.content.Context; 


       public class HttpURLConnectionExample extends AsyncTask<ListView, Void, String> { 

        public ListView myList = null; 

        public void sendGet(ListView lv){ 
         myList = lv; 
         this.execute(); 
         return; 
        } 

        @Override 
        protected String doInBackground(ListView... arg0) { 
         String url = "http://192.168.1.9"; 
         URL obj = null; 
         try{ 
          obj = new URL(url);} 
         catch(IOException e){} 
         HttpURLConnection con = null; 
         try{ 
          con = (HttpURLConnection) obj.openConnection();} 
         catch(IOException e){} 

         //con.setRequestProperty("User-Agent", USER_AGENT); 
         try{ 
          con.setRequestMethod("GET");} 
         catch(ProtocolException e){} 
         try{ 
          con.connect();} 
         catch(IOException e){} 
         try{ 
          int responseCode = con.getResponseCode();} 
         catch(IOException e){} 
         BufferedReader in = null; 
         try{ 
          in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));} 
         catch(IOException e){} 
         String inputLine; 
         StringBuffer response = new StringBuffer(); 
         try{ 
          while ((inputLine = in.readLine()) != null) { 
           response.append(inputLine); 
          }} 
         catch(IOException e){} 
         try{ 
          in.close();} 
         catch(IOException e){} 
         //print result 
         System.out.println(response.toString()); 
         return response.toString(); 
        } 

        @Override 
        protected void onPostExecute(String result) { 
         String strParts[] = result.split("@"); 
         ArrayList<dispencer> listAr = new ArrayList<dispencer>(); 
         for(int i=0; i<strParts.length; i++){ 
          listAr.add(new dispencer(strParts[i])); 
         } 

         final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_expandable_list_item_1); 

         for (int i = 0; i < listAr.size(); ++i) { 
          adapter.add(listAr.get(i).toString()); 
         } 
         myList.setAdapter(adapter); 
         return ; 
        } 

      } 

言うコンストラクタにgetActivity()を入れたとき、私は私がでてるので、私はgetActivityメソッドを使用していた読み断片であり、文脈ではない。 EDITこのクラスはすでにasyncTaskを拡張しているので、私のMainActivityクラスを拡張することはできませんでした。

+0

ファイルを表示すると、クラスはFragmentクラスを拡張しますか?フラグメントクラスはインポートに含まれていますか? –

+0

あなたは断片ではなく、AsyncTaskにあり、コンテキストではなく、getActivity()メソッドがありません – X3Btel

答えて

0

あなたが拡張されていないフラグメントのクラスにこの

mContext=getActivity(); 

パスのように)この変数をgetActivity(この変数を初期段階での型を持つ変数を定義。だからあなたは以下のことをする必要があります。

asynctaskクラスでコンテキストを使用する場合は、クラスコンストラクタでコンテキストを渡す必要があります。

public class MyCustomTask extends AsyncTask<Void, Void, Long> { 

private Context mContext; 

public MyCustomTask (Context context){ 
    mContext = context; 
} 

//other methods like onPreExecute etc. 
protected void onPostExecute(Long result) { 
    Toast.makeText(mContext,"Its working", Toast.LENGTH_LONG).show(); 
} } 

そして以下でクラスをインスタンス化します。

MyCustomTask task = new MyCustomTask(context); 
task.execute(..); 
0

まず、Fragmentクラスをインポートしてフラグメントエクステントを作成したことを確認してください。

Context mContext ; 

は、あなたのアダプタ

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_expandable_list_item_1); 
+0

私は変数に保存してからそれを使用しても差は出ません。結局、同じ値がアダプターの引数として終わります。 –

+0

あなたのクラスはFragmentクラスを拡張しないので、getActivity()は無効です@KetanMalhotra –

+0

"あなたの"ですか?私はその質問をしなかった。私はラファ(OP)にコメントする前に同じことをお勧めしました。私はちょうど変数にgetActivity()の値を保存することは問題を解決しないことを意味した。 –

0

あなたはAsyncTaskないFragmentクラスを拡張し、代わりにコンストラクタへContextまたはActivity参照渡しされています

public MyTask(Context context)をし、あなたのタスクでは、それへの参照を格納します。

関連する問題