我第一次在片段中使用Volley。
任何人都可以帮助我。我正在尝试以下代码,用于从导航抽屉调用的片段:
public class ChangePassword extends android.app.Fragment implements View.OnClickListener
{
EditText etOldSignUpPassword;
EditText etNewSignUpPassword;
EditText etNewSignUpConfirmPassword;
ImageButton imageChangePasswordButton;
ProgressBar pbWeb;
String old,npass,ncpass;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_change_password, container, false);
etOldSignUpPassword = (EditText)v.findViewById(R.id.etOldPassword);
etNewSignUpPassword = (EditText)v.findViewById(R.id.etNewSignUpPassword);
etNewSignUpConfirmPassword = (EditText)v.findViewById(R.id.etNewSignUpConfirmPassword);
imageChangePasswordButton = (ImageButton)v.findViewById(R.id.imageChangePasswordButton);
pbWeb = (ProgressBar)v.findViewById(R.id.pbWebC);
pbWeb.setVisibility(View.GONE);
imageChangePasswordButton.setOnClickListener(this);
return v;
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.imageChangePasswordButton) {
old = etOldSignUpPassword.getText().toString();
npass = etNewSignUpPassword.getText().toString();
ncpass = etNewSignUpConfirmPassword.getText().toString();
if (!isNetworkAvailable()) {
Toast.makeText(getActivity(), "Your Wifi/Data is disabled. Please switch on and try again", Toast.LENGTH_SHORT).show();
} else {
pbWeb.setVisibility(View.VISIBLE);
String server_url = "url_working_fine_for_activity_so_no_issue_here";
StringRequest strReq = new StringRequest(Request.Method.POST, server_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.equals("SUCCESS")) {
Toast.makeText(getActivity(), "Password Changed Successfully", Toast.LENGTH_SHORT).show();
Intent loginIntent = new Intent(getActivity(), LoginActivity.class);
startActivity(loginIntent);
pbWeb.setVisibility(View.GONE);
getActivity().finish();
} else {
pbWeb.setVisibility(View.GONE);
Toast.makeText(getActivity(), "Couldn't Change Password. Old Password Exists", Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pbWeb.setVisibility(View.GONE);
Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put("old", old);//etOldPassword.getText().toString() throws NullPointerException
map.put("new", npass);//"MY_DEFAULT_VALUE" as value is working fine but that is not the use case
map.put("newCon", ncpass);
return map;
}
};
//VolleySingleton is fine as working in Activity as well as when I give default values in getParams so no issue in this class
VolleySingleton.getInstance(getActivity().getApplicationContext()).addToReqQueue(strReq);
}
}
}
PREV: 目前此代码导致崩溃。
注意:我已尝试在onActivityCreated()方法内的imageChangePasswordButton上直接使用onClickListener(),而不在类上实现onClickListener,但在线程上发现存在错误。
编辑: 目前的代码工作正常。
这是请求的xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".mypackage.ChangePassword"> <!--The class ChangePassword is inside mypackage-->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pbWebC"
style="@android:style/Widget.ProgressBar.Small"
android:layout_centerInParent="true" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true">
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/image1"
android:id="@+id/logo"
android:layout_gravity="center_horizontal" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/prompt_old_email"
android:ems="10"
android:layout_marginTop="10dp"
android:id="@+id/etOldPassword" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/prompt_new_password"
android:ems="10"
android:layout_marginTop="10dp"
android:id="@+id/etNewSignUpPassword" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/prompt_new_confirm_password"
android:ems="10"
android:layout_marginTop="10dp"
android:id="@+id/etNewSignUpConfirmPassword" />
<ImageButton
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:id="@+id/imageChangePasswordButton"
android:layout_marginTop="20dp"
android:src="@drawable/reset" />
</LinearLayout>
</RelativeLayout>
编辑: 代码正常运行。谢谢您的帮助。 @LongRanger @ i-Droid