我正试图从服务器获取一些数据。用户单击search,另一个activity由startActivityForResult()启动。当用户单击数据时,数据应该放在intent中,setResult()用该intent完成,并调用finish()。现在我已经尝试了debugg,但是当调用finish()时,activity不会返回到调用这个activity的那个。相反,应用程序关闭了。
这是代码;
public class SearchContactActivity extends AppCompatActivity {
ProgressBar pb;
CircleImageView profile_image_search;
TextView name_search,user_name_search;
EditText edit_search_contact;
Button btn_search_contact;
ConstraintLayout cl;
String profile_image,firstName,lastName;
RequestQueue myQueue;
String url = "working url";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_contact);
pb = findViewById(R.id.progressBar);
profile_image_search = findViewById(R.id.profile_image_search);
name_search = findViewById(R.id.name_search);
user_name_search = findViewById(R.id.user_name_search);
btn_search_contact = findViewById(R.id.btn_search_contact);
edit_search_contact = findViewById(R.id.edit_search_contact);
cl = findViewById(R.id.nested_layout);
cl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setResultForPreviousAcitvity();
}
});
btn_search_contact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
search_contacts();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
hideVisibility();
}
public void setResultForPreviousAcitvity()
{
Intent data = new Intent();
data.putExtra("first_name",firstName);
data.putExtra("last_name",lastName);
data.putExtra("user_name",user_name_search.getText().toString());
data.putExtra("profile", profile_image);
setResult(RESULT_OK,data);
finish(); // app closes down here
}
private void search_contacts() throws JSONException {
pb.setVisibility(View.VISIBLE);
//send php data in json array format
//JSONObject jsonbody = new JSONObject("{\"search_key\":\"jhonsanders \"}");
HashMap<String, String> params = new HashMap<String, String>();
params.put("search_key", edit_search_contact.getText().toString().trim());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( url,new JSONObject(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("result");
for(int i = 0; i < jsonArray.length(); i++)
{
JSONObject myobj = jsonArray.getJSONObject(i);
firstName = myobj.getString("first_name");
lastName = myobj.getString("last_name");
String userName = myobj.getString("user_name");
profile_image = myobj.getString("profile_image");
Bitmap image = NameAndImage.stringToImage(profile_image);
show_visibility();
profile_image_search.setImageBitmap(image);
user_name_search.setText(userName);
name_search.setText(firstName+" "+lastName);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
})/*{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> param = new HashMap<>();
param.put("search_key",edit_search_contact.getText().toString().trim());
return param;
}
}*/;
myQueue = VolleySingleton.getInstance(SearchContactActivity.this).getRequestQueue();
myQueue.add(jsonObjectRequest);
}
private void hideVisibility()
{
pb.setVisibility(View.INVISIBLE);
profile_image_search.setVisibility(View.INVISIBLE);
name_search.setVisibility(View.INVISIBLE);
user_name_search.setVisibility(View.INVISIBLE);
}
private void show_visibility()
{
profile_image_search.setVisibility(View.VISIBLE);
name_search.setVisibility(View.VISIBLE);
user_name_search.setVisibility(View.VISIBLE);
pb.setVisibility(View.INVISIBLE);
}
/* private Bitmap stringToImage(String s)
{
byte[] image = Base64.decode(s,Base64.DEFAULT);
Bitmap decodedImage = BitmapFactory.decodeByteArray(image,0,image.length);
return decodedImage;
}*/
}
上面的activity是由
Intent i = new Intent(ContactsActivity.this,SearchContactActivity.class);
startActivityForResult(i,REQUEST_CONTACT_SEARCH);
这是舱单
<manifest html" target="_blank">xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.privatechat">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.PrivateChat">
<activity android:name=".SearchContactActivity"></activity>
<activity android:name=".ContactsActivity" />
<activity android:name=".NameAndImage" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
没有可以打印的日志。调用onfinish()时,将清除日志。
这个应用程序回到了另一个activity。这一个也有一个activityresult,但它不是称为另一个activity的那个。
public class NameAndImage extends AppCompatActivity {
EditText editFirstName,editLastName;
ImageView profile_image;
Button uploadNameImage;
Bitmap image;
RequestQueue myQueue;
SaveSharedPreference sp = new SaveSharedPreference();
private String URL = "working url";
public static final int PICK_IMAGE_REQUEST = 1011;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_name_and_image);
editFirstName = findViewById(R.id.edit_first_name);
editLastName = findViewById(R.id.edit_last_name);
profile_image = findViewById(R.id.profile_image_search);
uploadNameImage = findViewById(R.id.upload_name_image);
Log.i("SharedPreference",sp.getUserName(NameAndImage.this).trim());
profile_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pickPhoto();
}
});
uploadNameImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadData();
}
});
}
private void pickPhoto()
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,PICK_IMAGE_REQUEST);
}
private void uploadData()
{
StringRequest upload_data = new StringRequest(Request.Method.POST, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.trim().equals("success_data_upload"))
{
Toast.makeText(NameAndImage.this, "upload success", Toast.LENGTH_SHORT).show();
Intent i = new Intent(NameAndImage.this,ContactsActivity.class);
startActivity(i);
}
if(response.trim().equals("Error"))
{
Toast.makeText(NameAndImage.this, "upload error", Toast.LENGTH_SHORT).show();
Log.i("server",response.toString());
}
else
{
Toast.makeText(NameAndImage.this, "Response dont match", Toast.LENGTH_SHORT).show();
Log.i("server",response);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(NameAndImage.this, error.toString(), Toast.LENGTH_SHORT).show();
Log.i("server",error.toString());
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> param = new HashMap<>();
param.put("image",imageToString(image));
param.put("first_name",editFirstName.getText().toString());
param.put("last_name",editLastName.getText().toString());
param.put("user_name",sp.getUserName(NameAndImage.this).trim());
return param;
}
};
upload_data.setRetryPolicy(new DefaultRetryPolicy(
3000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
));
myQueue = VolleySingleton.getInstance(NameAndImage.this).getRequestQueue();
myQueue.add(upload_data);
}
public static String imageToString(Bitmap pic)
{
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
pic.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
byte[] imageByte = byteArrayOutputStream.toByteArray();
return Base64.encodeToString(imageByte,Base64.DEFAULT);
}
public static Bitmap stringToImage(String s)
{
byte[] image = Base64.decode(s,Base64.DEFAULT);
Bitmap decodedImage = BitmapFactory.decodeByteArray(image,0,image.length);
return decodedImage;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK)
{
Uri uri = data.getData();
try {
image = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
profile_image.setImageBitmap(image);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
编辑:应用程序似乎关闭,但2秒后,错误的activity启动。
在setResult()中设置结果时,我将包含image的string profile放入字符串。我想字符串真的很大,但是当我调试时,整个字符串似乎都在那里。所以当我让profile清空时,应用程序运行正常。看来我将不得不将字符串分成2个以获得更多的效果。
Python新手在这里。我正在编写一个简单的客户端/服务器程序,要求用户输入姓名、用户名、电子邮件地址、密码。此信息被发送到服务器,服务器将检查此用户的文本文件中是否已经有条目。如果有,它应该发送一条消息回来说这个用户已经存在,要求用户再试一次。 我设置了一个名为标志的变量为False。我对照文本文件检查用户信息,如果在文件中没有找到匹配,我将标志设置为true。然后我有一个if语句,它说如果标志
给定以下使用多线程的Java示例: 它产生: 但应用程序永远不会终止。 我是不是该加入这条线什么的?
我有一些代码,使用JSoup和连接到一个网站成功的Java。 我试图在Android上复制完全相同的东西(作为学习体验)。 我的JAVA代码中没有任何错误,并且已经确认它在JAVA(运行在Netbeans中)中仍然可以工作 我在libs文件夹中有我的JSoup jar~这是一个花了一点时间才找到的问题。 我已经放置了一些edittext.settext(“here”);查看代码的位置。 我试过这两
我正在尝试使用Prometheus在Kubernetes上监视Spring Boot应用程序。Promethus正在使用Helm,而我正在使用Spring Boot执行器进行健康检查、审计、度量收集和监控。 致动器给出了应用的详细说明。例如: 在输出下方返回
假设您有一个应用程序A和一个线程类,如: 从A开始,您可以从以下内容开始线程: 那么当应用程序A完成时,MyThread是否也停止?否则,如何确保它会被中断?
为什么Rest控制器会抛出BindException或返回空的ModelandView? 注意:我正在使用curl测试我的web应用程序,并制作一个HTTP POST 我有意省略了“name”参数,这是一个用@Notnull和@Notblank注释标记的必填字段。 我有几个支持类--Task、TaskCommand、Error和ErrorsList--如果需要,我可以发布代码。