2016-08-09 45 views
0

Ich Umwandlung meine Tätigkeit zu einem Fragment Fragment, dann erhielt ich einen Fehler, ich glaube, ich brauche nur etwas Code hinzufügen, was soll ichwie Code von einer Aktivität zur Umwandlung

private class AsyncLogin extends AsyncTask<String, String, String> { 
    ProgressDialog pdLoading = new ProgressDialog(NotifMainActivity.this); 
    HttpURLConnection conn; 
    URL url = null; 

Fehler hinzufügen von der "NotifMainActivity.this" es sagt "in Arbeit-Dialog kann nicht angewendet werden" Ich habe ein Bild für Sie eingefügt, um den Fehler in tatsächlichen zu sehen. Click here to see the image

Aktualisierung. Also habe ich die "NotifMainActivity.this" mit getActivity geändert, wie es Sir Kashif Anwar vorgeschlagen hat, aber die Funktion des Fragments funktioniert nicht, vielleicht können Sie mir eine alternative Lösung anbieten.

Hier wird der gesamte Code des Fragments ist (dieses Fragment ist die Aktivität eines recyclerview)

package com.capstone.jmilibraryapp; 

import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

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

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.List; 

public class NotifMainActivity extends Fragment { 

// CONNECTION_TIMEOUT and READ_TIMEOUT are in milliseconds 
public static final int CONNECTION_TIMEOUT = 10000; 
public static final int READ_TIMEOUT = 15000; 
private RecyclerView mRVFishPrice; 
private AdapterNotif mAdapter; 

     /*@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_notifmainactivity); 
    //Make call to AsyncTask 
    new AsyncLogin().execute(); 
}*/ 
View myView; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    myView = inflater.inflate(R.layout.activity_notifmainactivity, container, false); 
    return myView; 
} 

private class AsyncLogin extends AsyncTask<String, String, String> { 
    ProgressDialog pdLoading = new ProgressDialog(getActivity()); 
    HttpURLConnection conn; 
    URL url = null; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     //this method will be running on UI thread 
     pdLoading.setMessage("\tLoading..."); 
     pdLoading.setCancelable(false); 
     pdLoading.show(); 

    } 

    @Override 
    protected String doInBackground(String... params) { 
     try { 

      // Enter URL address where your json file resides 
      // Even you can make call to php file which returns json data 
      url = new URL("http://192.168.1.101/notif.php"); 

     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return e.toString(); 
     } 
     try { 

      // Setup HttpURLConnection class to send and receive data from php and mysql 
      conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(READ_TIMEOUT); 
      conn.setConnectTimeout(CONNECTION_TIMEOUT); 
      conn.setRequestMethod("GET"); 

      // setDoOutput to true as we recieve data from json file 
      conn.setDoOutput(true); 

     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
      return e1.toString(); 
     } 

     try { 

      int response_code = conn.getResponseCode(); 

      // Check if successful connection made 
      if (response_code == HttpURLConnection.HTTP_OK) { 

       // Read data sent from server 
       InputStream input = conn.getInputStream(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
       StringBuilder result = new StringBuilder(); 
       String line; 

       while ((line = reader.readLine()) != null) { 
        result.append(line); 
       } 

       // Pass data to onPostExecute method 
       return (result.toString()); 

      } else { 

       return ("unsuccessful"); 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
      return e.toString(); 
     } finally { 
      conn.disconnect(); 
     } 


    } 

    @Override 
    protected void onPostExecute(String result) { 

     //this method will be running on UI thread 

     pdLoading.dismiss(); 
     List<DataNotif> data=new ArrayList<>(); 

     pdLoading.dismiss(); 
     try { 

      JSONArray jArray = new JSONArray(result); 

      // Extract data from json and store into ArrayList as class objects 
      for(int i=0;i<jArray.length();i++){ 
       JSONObject json_data = jArray.getJSONObject(i); 
       DataNotif fishData = new DataNotif(); 

       fishData.NotifTitle= json_data.getString("notif_Title"); 
       fishData.NotifMessage= json_data.getString("notif_Message"); 
//     fishData.sizeName= json_data.getString("size_name"); 
       fishData.Date= json_data.getString("notif_date"); 
       data.add(fishData); 
      } 

      // Setup and Handover data to recyclerview 
      mRVFishPrice = (RecyclerView)myView.findViewById(R.id.fishPriceList); 
      mAdapter = new AdapterNotif(getActivity(), data); 
      mRVFishPrice.setAdapter(mAdapter); 
      mRVFishPrice.setLayoutManager(new LinearLayoutManager(getActivity())); 

     } catch (JSONException e) { 
      Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG).show(); 
      Toast.makeText(getActivity(), "There maybe some error try again",Toast.LENGTH_LONG).show(); 
     } 

    } 

} 

}

+0

Hey überprüfen Sie meine Antwort, akzeptieren Sie meine Antwort und upvote es bitte. –

+0

@KashifAnwar ja, es die Anwendung ausführen, aber die Funktion funktioniert nicht mehr. Ich werde meinen Beitrag mit dem ganzen Code aktualisieren. Bitte helfen Sie mir, Sir. –

Antwort

0

Sie sollten getActivity() anstelle von Klassennamen verwenden,

wie dies

ProgressDialog pd = new ProgressDialog(getActivity()); 

Hoffe es hilft!

+0

machte einige Korrekturen und löste es. Ihre Antwort ist richtig, danke. –

+0

Gern geschehen. –