AsyncTask в SharePreferences

Я новичок в разработке Android. Я создал проект, который использует AsyncTask с doInBackground а также onExecute,

Я успешно отобразил данные на AsyncTask в пользовательском интерфейсе, но я хочу сохранить эти данные в SharePreferences когда я нажимаю Button,

Вот мой код:

public class MainActivity extends Activity 
{
    TextView ipDetail, pip;
    String lll;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ipDetail = (TextView) findViewById(R.id.ipDetail);
        pip = (TextView) findViewById(R.id.ip);

        TextView title = (TextView) findViewById(R.id.title);
        title.setOnLongClickListener(new OnLongClickListener() {

            @Override
            public boolean onLongClick ( View p1 ) {
                // TODO: Implement this method
                AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
                alert.create();
                alert.setTitle("KAMPRET");
                alert.show();
                return false;
            }
        });

        new getIP().execute();
    }
...

внутри MainActivity Я создаю класс с именем GetIP это расширяет AsyncTask.

Вот код:

private class getIP extends AsyncTask<Void,Void,Void> {
    // URL Data
    String SCHEME_DATA = "http";
    String AUTH_DATA = "ip-api.com";
    String PATH_DATA = "line";
    String QUERY_DATA = "fields";
    String[] QUERY_ARRAY = {
        "query",
        "city",
        "regionName",
        "country",
        "isp",
        "org"
    };

    String ip;
    String c;
    String rn;
    String cn;
    String isp;
    String org;
    String url = "http://ip-api.com/line/?fields=query";

    @Override
    protected Void doInBackground ( Void[] p1 ) {
        // TODO: Implement this method
        Uri.Builder URL_IP = new Uri.Builder();
        URL_IP.scheme(SCHEME_DATA)
        .authority(AUTH_DATA)
        .appendPath(PATH_DATA)
        .appendPath("")
        .appendQueryParameter(QUERY_DATA, QUERY_ARRAY[0]);

        Uri.Builder URL_CITY = new Uri.Builder();
        URL_CITY.scheme(SCHEME_DATA)
            .authority(AUTH_DATA)
            .appendPath(PATH_DATA)
            .appendPath("")
            .appendQueryParameter(QUERY_DATA, QUERY_ARRAY[1]);

        Uri.Builder URL_REGION = new Uri.Builder();
        URL_REGION.scheme(SCHEME_DATA)
            .authority(AUTH_DATA)
            .appendPath(PATH_DATA)
            .appendPath("")
            .appendQueryParameter(QUERY_DATA, QUERY_ARRAY[2]);

        Uri.Builder URL_COUNTRY = new Uri.Builder();
        URL_COUNTRY.scheme(SCHEME_DATA)
            .authority(AUTH_DATA)
            .appendPath(PATH_DATA)
            .appendPath("")
            .appendQueryParameter(QUERY_DATA, QUERY_ARRAY[3]);

        Uri.Builder URL_ISP = new Uri.Builder();
        URL_ISP.scheme(SCHEME_DATA)
            .authority(AUTH_DATA)
            .appendPath(PATH_DATA)
            .appendPath("")
            .appendQueryParameter(QUERY_DATA, QUERY_ARRAY[4]);

        Uri.Builder URL_ORG = new Uri.Builder();
        URL_ORG.scheme(SCHEME_DATA)
            .authority(AUTH_DATA)
            .appendPath(PATH_DATA)
            .appendPath("")
            .appendQueryParameter(QUERY_DATA, QUERY_ARRAY[5]);

        String uriIP = URL_IP.build().toString();
        String uriCity = URL_CITY.build().toString();
        String uriRegion = URL_REGION.build().toString();
        String uriCountry = URL_COUNTRY.build().toString();
        String uriIsp = URL_ISP.build().toString();
        String uriOrg = URL_ORG.build().toString();

        // Try IP Address 
        try {
            Document showIP = Jsoup.connect(uriIP).get();       
            Document showCity = Jsoup.connect(uriCity).get();
            Document showRegion = Jsoup.connect(uriRegion).get();
            Document showCountry = Jsoup.connect(uriCountry).get();
            Document showIsp = Jsoup.connect(uriIsp).get();
            Document showOrg = Jsoup.connect(uriOrg).get();

            ip = showIP.text();
            c = showCity.text();
            rn = showRegion.text();
            cn = showCountry.text();
            isp = showIsp.text();
            org = showOrg.text();
        } catch(IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute ( Void result ) {
        // TODO: Implement this method
        ipDetail.setText("IP: " + ip + "\nCity: " + c + "\nRegion: " + rn + "\nCountry: " + cn + "\nISP: " + isp + "\nOrg: " + org);
        pip.setText(ip);
        super.onPostExecute(result);
    }


}

И кнопка onClick:

public void saveData(View v) {
    SharedPreferences sp = getSharedPreferences("ipList", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putString("usedIP", pip.toString());
    editor.apply();
    Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
}

И Вопрос: Как я могу получить данные класса GetIP и сохранить их в SharePreferences?

1 ответ

Я могу решить это, я просто забываю одну вещь. В кнопку onClick()

public void saveData(View v){

    SharedPreferences sp = getSharedPreferences("ipList", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();

    // I forget to adding getText().toString().
    editor.putString("usedIP", pip.getText().toString());
    editor.apply();
    Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
}
Другие вопросы по тегам