【问题标题】:How to pass editText data to a string URL如何将editText数据传递给字符串URL
【发布时间】:2019-08-08 10:50:25
【问题描述】:

我想通过从另一个活动 (LoginActivity.java) 中的 3 个编辑文本框获取信息并将该数据传递到另一个活动中来在我的一个活动 (UploadActivity.java) 中创建一个 URL,

我在 SO 上找到的所有问题仅涉及静态 URL,即 www.blahblah.com/blah-blah.asp?My=Yes 等。

基本上用户必须输入他的电子邮件、密码和客户 ID(由我公司制作),然后必须合并成一个字符串

喜欢这个 公共静态最终字符串 UPLOAD_URL = "https://www.smartpractice.co.za/files-upload-ruben.asp?clientID=6868";

我正在使用上面的 url 将用户的位置上传到服务器。

我必须在活动中声明编辑文本框吗?因为目前只有我活动的 XML 布局

我在另一个问题中发现了这一点,但我不明白如何在我的代码中实现它。

您的编辑文本

EditText your_edit_text = (EditText) findViewById(R.id.your_id);

从编辑文本中获取用户数据作为休闲..

String edit_text_data = your_edit_text.getText().toString();

现在,当您需要将该数据放在 url 上时 .. 像这样使用 ..

String your_url = "http://www.google.com=" + edit_text_data;

我想把Url放在这个String里面的""引号里

   public static final String UPLOAD_URL = 
  "https://www.smartpractice.co.za/files-upload-ruben.asp?MyForm=Yes";

上传活动 JAVA

public class UploadActivity extends AppCompatActivity implements View.OnClickListener {

public static final String UPLOAD_URL = "https://www.smartpractice.co.za/files-upload-ruben.asp?MyForm=Yes";
public static final String UPLOAD_KEY = "image";

private int PICK_IMAGE_REQUEST = 1;

private Button buttonChoose;
private Button buttonUpload;

private ImageView imageView;
private Bitmap bitmap;
private Uri filePath;



@Override
public void onCreate(Bundle savedInstanceState ) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload);

        init();
        }
        private void init(){
        buttonChoose = findViewById(R.id.btnChoose);
        buttonUpload = findViewById(R.id.btnUpload);

        imageView = findViewById(R.id.imageView);

        buttonChoose.setOnClickListener(this);
        buttonUpload.setOnClickListener(this);
        }
private void showFileChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
        }

@SuppressWarnings("deprecation")
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        filePath = data.getData();
        try {
        bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
        imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

public String getStringImage(Bitmap bmp){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] imageBytes = baos.toByteArray();
        return Base64.encodeToString(imageBytes, Base64.DEFAULT);
        }

private void uploadImage(){
@SuppressLint("StaticFieldLeak")
class UploadImage extends AsyncTask<Bitmap,Void,String> {
    private ProgressDialog loading;
    private RequestHandler rh = new RequestHandler();

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        loading = ProgressDialog.show(UploadActivity.this, "Uploading Image", "Please wait...",true,true);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        loading.dismiss();
        Toast.makeText(UploadActivity.this,s,Toast.LENGTH_LONG).show();
    }

    @RequiresApi(api=Build.VERSION_CODES.KITKAT)
    @Override
    protected String doInBackground(Bitmap... params) {
        Bitmap bitmap = params[0];
        String uploadImage = getStringImage(bitmap);

        HashMap<String,String> data = new HashMap<>();
        data.put(UPLOAD_KEY, uploadImage);
        data.put("name",getFileName(filePath));

        return rh.postRequest(UPLOAD_URL,data);
    }
}

    UploadImage ui = new UploadImage();
        ui.execute(bitmap);
                }

@Override
public void onClick(View v) {
        if (v == buttonChoose) {
        showFileChooser();
        }
        if(v == buttonUpload){
        if(filePath!=null) {
        uploadImage();
        } else {
        Toast.makeText(UploadActivity.this,"Select Image",Toast.LENGTH_LONG).show();
        }
        }
        }
@RequiresApi(api=Build.VERSION_CODES.KITKAT)
    String getFileName(Uri uri){
            String result = null;
            if (Objects.equals(uri.getScheme(), "content")) {
            try (Cursor cursor=getContentResolver().query(uri, null, null, null, null)) {
            if (cursor != null && cursor.moveToFirst()) {
            result=cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
            }
            }
            }
            if (result == null) {
            result = uri.getPath();
            assert result != null;
            int cut = result.lastIndexOf('/');
            if (cut != -1) {
            result = result.substring(cut + 1);
            }
            }
            return result;
            }
    }

**登录活动 到目前为止,编辑文本框都在 XML 布局中 **

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
    }

}

简而言之,从LoginActivity 获取editText 值并将其传递给UploadActivity,并使用该信息在UploadActivity 中构建一个URL。

【问题讨论】:

  • 您的登录代码在哪里?
  • 最好使用比 okhttp 或改造之类的异步任务更好的东西。
  • @AliAhsan 抱歉,“登录”并不是真正的登录,我们只是将应用程序推广到我公司的某些客户,所以身份验证并不是真正需要的,它只是用来保存和加载电子邮件密码和客户端 ID,我不知道该怎么做,正忙着寻找它还请注意,我大约一周前才开始编码和这个基本的 android 开发,所以我仍然很不了解
  • @PembaTamang,这有什么关系??
  • 少样板伴侣

标签: android json url android-edittext uri


【解决方案1】:

从 LoginActivity 中获取 edittext 值并将这些值传递给 UploadActivity

LoginActivity 中的onCreate 方法中绑定您的视图(用您的ID 更改)并将输入通过Intent 传递给UploadActivity

public class LoginActivity extends AppCompatActivity {

private EditText email,password,email;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

 email = findViewById(R.id.email); 
 password = findViewById(R.id.password);
 email = findViewById(R.id.clientID);
 Button loginBtn = findViewById(R.id.loginBtn);

loginBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                String emailAddress = email.getText().toString().trim();
                String userPassword = password.getText().toString().trim();

             //Pass the data to next activity


             String clientId = clientID.getText().toString().trim();
             Intent intent = new Intent(LoginActivity.this, UploadActivity.class);
             intent.putExtra("clientId", clientId);
             intent.putExtra("email", emailAddress);
             intent.putExtra("password", userPassword);
             startActivity(intent);
            }
        });
    }

}

使用以上信息在UploadActivity中建立一个URL

    @RequiresApi(api=Build.VERSION_CODES.KITKAT)
        @Override
        protected String doInBackground(Bitmap... params) {
            Bitmap bitmap = params[0];
            String uploadImage = getStringImage(bitmap);

            HashMap<String,String> data = new HashMap<>();
            data.put(UPLOAD_KEY, uploadImage);
            data.put("name",getFileName(filePath));

        Intent intent = getIntent();
        String clientId = intent.getStringExtra("clientId");

Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
    .authority("ww.smartpractice.co.za")
    .appendPath("files-upload-ruben.asp")
    .appendQueryParameter("clientID", clientId);
String myUrl = builder.build().toString();

            return rh.postRequest(myUrl,data);
        }

干杯:)

【讨论】:

  • 非常感谢老兄,将测试代码并通知您
  • 对不起,只是另一个请求帮助 onResponse(Response response) { String clientId = clientID.getText().toString().trim(); Intent intent = new Intent(LoginActivity.this, UploadActivity.class); intent.putExtra("clientId", clientId);开始活动(意图);我必须把这个放在哪里.....而且网络电话的帖子请求上的 rh 给了我无法解析符号以及 LOGIN_URL
  • 我添加了onResponse 代码来给出一个想法,但没关系,我已经更新了答案
  • 如果您觉得有帮助,请接受并投票。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 2016-10-25
  • 1970-01-01
  • 2021-11-16
  • 2018-10-30
  • 1970-01-01
相关资源
最近更新 更多