在postexecute()内启动意图时强制关闭

时间:2015-10-24 18:39:08

标签: android

我创建了一个应用程序,在你将一些单词插入编辑文本后,它会发送到服务器并转到其他活动。但我不能让它转到其他活动,因为它强行关闭。请帮助我

这是我的代码

公共类MainActivity扩展AppCompatActivity实现了View.OnClickListener {

private static final String SERVER_ADDRESS = "http://www.bruhnancel.xyz/testing.php";
EditText picname, link;
Button submit, submitpic;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    picname = (EditText)findViewById(R.id.picname);
    link = (EditText)findViewById(R.id.link);
    submit =(Button)findViewById(R.id.submit);
    submitpic = (Button)findViewById(R.id.submitpic);

    submit.setOnClickListener(this);
    submitpic.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    switch (v.getId()){

        case R.id.submit:

                    new sendData(picname.getText().toString(), link.getText().toString()).execute();

            break;

        case R.id.submitpic:

    }
}

private HttpParams getHttpRequestParams(){

    HttpParams httpRequestParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpRequestParams, 1000 * 30);
    HttpConnectionParams.setSoTimeout(httpRequestParams, 1000 * 30);
    return httpRequestParams;
}

public class sendData extends AsyncTask<Void, Void, Void>{

    Context c;
    String picname;
    String link;


    /*public sendData(Context context) {
        this.context = context.getApplicationContext();
    }*/
    public sendData(Context context) {
       c = context;
    }

    public sendData(String picname, String link){
        this.picname = picname;
        this.link = link;
    }


    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);

            Toast.makeText(getApplicationContext(), " Uploaded", Toast.LENGTH_SHORT).show();

        startActivity(new Intent(c, UploadImage.class));


    }

    @Override
    protected Void doInBackground(Void... params) {

        ArrayList<NameValuePair> dataToSend = new ArrayList<>();
        dataToSend.add(new BasicNameValuePair("picname", picname));
        dataToSend.add(new BasicNameValuePair("link", "www.bruhnancel.xyz/" + link));

        try{
            HttpParams httpRequestParams = getHttpRequestParams();
            HttpClient client = new DefaultHttpClient(httpRequestParams);
            HttpPost post = new HttpPost(SERVER_ADDRESS);



            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            client.execute(post);

        }catch(Exception e){
            Toast.makeText(getApplicationContext(), " Failed", Toast.LENGTH_SHORT).show();
        }
        return null;
    }
}

}

这是我的UploadImageClass

package com.example.user.testinguploaddata;

import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;

@SuppressWarnings("ALL")
public class UploadImage extends AppCompatActivity implements View.OnClickListener {

    private ProgressDialog progressDialog;
    private static final int RESULT_LOAD_IMAGE = 1;
    private static final String SERVER_ADDRESS = "http://www.bruhnancel.xyz/" ;
    ImageView imageToUpload, downloadedImage;
    Button bUploadImage, bDownloadImage;
    EditText uploadImageName, downloadImageName;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageToUpload = (ImageView)findViewById(R.id.imageToUpload);
        downloadedImage = (ImageView)findViewById(R.id.downloadedImage);
        bUploadImage = (Button)findViewById(R.id.bUploadImage);
        bDownloadImage = (Button)findViewById(R.id.bDownloadImage);

        uploadImageName = (EditText)findViewById(R.id.etUploadName);
        downloadImageName = (EditText)findViewById(R.id.etDownloadName);

        imageToUpload.setOnClickListener(this);
        bUploadImage.setOnClickListener(this);
        bDownloadImage.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.imageToUpload:

                Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE); // Bring the image together after the intent
                break;
            case R.id.bUploadImage:


                Bitmap image = ((BitmapDrawable)imageToUpload.getDrawable()).getBitmap();
                new UploadImageToServer(image, uploadImageName.getText().toString()).execute();

                break;
            case R.id.bDownloadImage:
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data !=null){
            Uri selectedImage = data.getData();
            imageToUpload.setImageURI(selectedImage);
        }
    }

    private class UploadImageToServer extends AsyncTask<Void, Void, Void>{

        Bitmap image;
        String name;
        public UploadImageToServer(Bitmap image, String name){
            this.image = image;
            this.name = name;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            showProgressDialog("Please wait...", "Your message");
        }

        @Override
        protected Void doInBackground(Void... params) {

            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            image.compress(Bitmap.CompressFormat.JPEG, 50, byteArrayOutputStream);

            String encodedImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);

            ArrayList<NameValuePair> dataToSend = new ArrayList<>();
            dataToSend.add(new BasicNameValuePair("image", encodedImage));
            dataToSend.add(new BasicNameValuePair("name", name));

            //ContentValues values = new ContentValues();
            //values.put("image", encodedImage);
            //values.put("name", name);
            try{
                HttpParams httpRequestParams = getHttpRequestParams();
                HttpClient client = new DefaultHttpClient(httpRequestParams);
                HttpPost post = new HttpPost(SERVER_ADDRESS + "SavePicture.php");



                post.setEntity(new UrlEncodedFormEntity(dataToSend));
                client.execute(post);

            }catch(Exception e){
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);

            if(progressDialog != null && progressDialog.isShowing())
            {

                progressDialog.dismiss();
                Toast.makeText(getApplicationContext(), "Image Uploaded", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private HttpParams getHttpRequestParams(){

        HttpParams httpRequestParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestParams, 1000 * 30);
        HttpConnectionParams.setSoTimeout(httpRequestParams, 1000*30);
        return httpRequestParams;
    }

    private void showProgressDialog(String title, String message)
    {
        progressDialog = new ProgressDialog(this);

        progressDialog.setTitle("Please wait"); //title

        progressDialog.setMessage("Uploading"); // message

        progressDialog.setCancelable(false);

        progressDialog.show();
    }
}

0 个答案:

没有答案