如何从OnPostExecute方法获得结果

时间:2015-07-20 16:44:02

标签: java android

我的问题是:在android编程中如何将在AsyncTask的onPostExecute()方法中获得的double和string数据传递给另一个将接收此数据的活动。例如,传递双坐标和字符串名称,我在onPostExecute()方法中,然后将这些字符串数据传输到另一个活动。我附上我的代码。提前谢谢。

protected void onPostExecute(String result) {
    super.onPostExecute(result);

    String[] map = result.split("[\":,]");

    int i = 64;
    int a = 1;
    String[] lat = new String[6000];
    while (i < 5000) {
        lat[a] = map[i];
        i = i + 84;
        a = a + 1;
    }

    int i2 = 76;
    int a2 = 1;
    String[] lng = new String[6000];
    while (i2 < 5000) {
        lng[a2] = map[i2];
        i2 = i2 + 84;
        a2 = a2 + 1;
    }

    int i3 = 1;
    map_lat = new double[61];
    while (i3 < 60) {
        map_lat[i3] = Double.parseDouble(lat[i3]);
        Log.i("JSON", "Lat: " + map_lat[i3]);
        i3 = i3 + 1;
    }

    int i4 = 1;
    map_lng = new double[61];
    while (i4 < 60) {
        map_lng[i4] = Double.parseDouble(lng[i4]);
        Log.i("JSON", "Lng: " + map_lng[i4]);
        i4 = i4 + 1;
    }

    int i5 = 40;
    int a5 = 1;
    map_loc = new String[6000];
    while (i5 < 4950) {
        map_loc[a5] = map[i5];
        Log.i("JSON", "Loc: " + map_loc[a5]);
        i5 = i5 + 84;
        a5 = a5 + 1;
    }

    int i6 = 58;
    int a6 = 1;
    map_info = new String[6000];
    while (i6 < 4950) {
        map_info[a6] = map[i6];
        Log.i("JSON", "Info: " + map_info[a6]);
        i6 = i6 + 84;
        a6 = a6 + 1;
    }


double[] ab = map_lat;
double[] ac = map_lng;
String[] ad = map_loc;
String[] ae = map_info;
String af = "0";


    public double[] Map(){
    double[] ab = map_lat;
    double[] ac = map_lng;
    String[] ad = map_loc;
    String[] ae = map_info;
        return ab;
}

double[] ag = Map();

3 个答案:

答案 0 :(得分:0)

在提问之前,请先google it.Have你试过that。有很多例子。

您可以使用意图,即在活动之间发送的消息。在intent中,您可以放置​​所有类型的数据,String,int等。

在您的情况下,在activity2中,在转到activity1之前,您将以这种方式存储String消息:

Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);

在activity1中,在onCreate()中,您可以通过检索Bundle(包含调用活动发送的所有消息)来获取String消息,并在其上调用getDouble():

Bundle bundle = getIntent().getExtras();
String message =  bundle.getDouble("message");

答案 1 :(得分:0)

如果你想开始一项新活动,你应该做Soham所说的并将数据放在意图上。

如果要将数据发送回启动AsyncTask的活动,您可以发送该上下文的副本,并在执行结束时让AsyncTask调用特定方法,并通过该方法发送结果。 / p>

答案 2 :(得分:0)

从onPostExecute获取信息的一个好方法是使用接口。

public interface AsyncClass {
     void processFinish(String[] output);
}

然后回到我们的MainActivity,你可以调用它来获取你想要的数据。

@Overide
public void processFinish(String[] output) {
    String[] temp = output;
}

正如Soham回答的那样,如果您需要将此输出传递给另一个类,则可以将此输出传递给intent。