0

This is the fragment

private TextView tv_name,tv_email,tv_message;
private SharedPreferences pref;
private AppCompatButton btn_change_password,btn_order,btn_logout;
private EditText et_old_password,et_new_password;
private AlertDialog dialog;
private ProgressBar progress;
EditText cardnumber;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_profile,container,false);
    initViews(view);
    return view;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    pref = getActivity().getPreferences(0);
    tv_name.setText("Welcome : "+pref.getString(Constants.NAME,""));
    tv_email.setText(pref.getString(Constants.EMAIL, ""));

}

private void initViews(View view){

    tv_name = (TextView)view.findViewById(R.id.tv_name);
    tv_email = (TextView)view.findViewById(R.id.tv_email);
    btn_change_password = (AppCompatButton)view.findViewById(R.id.btn_chg_password);
    btn_order = (AppCompatButton)view.findViewById(R.id.btn_order);
    btn_logout = (AppCompatButton)view.findViewById(R.id.btn_logout);
    btn_change_password.setOnClickListener(this);
    btn_order.setOnClickListener(this);
    btn_logout.setOnClickListener(this);

}

private void showDialog(){

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View view = inflater.inflate(R.layout.dialog_change_password, null);
    et_old_password = (EditText)view.findViewById(R.id.et_old_password);
    et_new_password = (EditText)view.findViewById(R.id.et_new_password);
    tv_message = (TextView)view.findViewById(R.id.tv_message);
    progress = (ProgressBar)view.findViewById(R.id.progress);
    builder.setView(view);
    builder.setTitle("Change Password");
    builder.setPositiveButton("Change Password", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    dialog = builder.create();
    dialog.show();
    dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String old_password = et_old_password.getText().toString();
            String new_password = et_new_password.getText().toString();
            if (!old_password.isEmpty() && !new_password.isEmpty()) {

                progress.setVisibility(View.VISIBLE);
                changePasswordProcess(pref.getString(Constants.EMAIL, ""), old_password, new_password);

            } else {

                tv_message.setVisibility(View.VISIBLE);
                tv_message.setText("Fields are empty");
            }
        }
    });
}

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

        case R.id.btn_chg_password:
            showDialog();
            break;
        case R.id.btn_order:
            Intent myIntent = new Intent(getActivity(), activityresult1.class);
            startActivity(myIntent);
            break;
        case R.id.btn_logout:
            logout();
            break;
    }
}




private void logout() {
    SharedPreferences.Editor editor = pref.edit();
    editor.putBoolean(Constants.IS_LOGGED_IN,false);
    editor.putString(Constants.EMAIL,"");
    editor.putString(Constants.NAME,"");
    editor.putString(Constants.UNIQUE_ID,"");
    editor.apply();
    goToLogin();
}

private void goToLogin(){

    Fragment login = new LoginFragment();
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_frame,login);
    ft.commit();
}

private void changePasswordProcess(String email,String old_password,String new_password){

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    com.example.android.cardemulation.RequestInterface requestInterface = retrofit.create(com.example.android.cardemulation.RequestInterface.class);

    User user = new User();
    user.setEmail(email);
    user.setOld_password(old_password);
    user.setNew_password(new_password);
    ServerRequest request = new ServerRequest();
    request.setOperation(Constants.CHANGE_PASSWORD_OPERATION);
    request.setUser(user);
    Call<ServerResponse> response = requestInterface.operation(request);

    response.enqueue(new Callback<ServerResponse>() {
        @Override
        public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

            ServerResponse resp = response.body();
            if(resp.getResult().equals(Constants.SUCCESS)){
                progress.setVisibility(View.GONE);
                tv_message.setVisibility(View.GONE);
                dialog.dismiss();
                Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

            }else {
                progress.setVisibility(View.GONE);
                tv_message.setVisibility(View.VISIBLE);
                tv_message.setText(resp.getMessage());

            }
        }

        @Override
        public void onFailure(Call<ServerResponse> call, Throwable t) {

            Log.d(Constants.TAG,"failed");
            progress.setVisibility(View.GONE);
            tv_message.setVisibility(View.VISIBLE);
            tv_message.setText(t.getLocalizedMessage());


        }
    });
}

i want to get to activityresult1 when i press the button btn_order in the fragment so that i can go to the activityresult1 and it will display the EMAIL which is tv_email please help me with it

This is the activityresult1

Button buttonorder;
TextView textviewemail;
private static final int REQUEST_CODE = 10;

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

    Bundle extras = getIntent().getExtras();
    String tv_email = extras.getString("tv_email");
    textviewemail = (TextView) findViewById(R.id.textviewemail);
    textviewemail.setText("Welcome, " + tv_email+ " !" + "\nPlease select the food you want ! : ");
Vyshunavi
  • 101
  • 10

2 Answers2

1

for passing the email value write the following code in the order button click

Intent myIntent = new Intent(getActivity(), activityresult1.class);
myIntent.putExtra("email", pref.getString(Constants.EMAIL, ""));
startActivity(myIntent);

then write this code for getting the email value which activity you want

getIntent().getExtras().getString("email");
Masum
  • 4,879
  • 2
  • 23
  • 28
1

Implement below interface in your fragment:

 public interface Callback {
  //Here Object class means data which you want to sent from fragment to activity
   void setData(String email);
}

implements CallbackFragment.Callback in your activity, override method of this callback. Then use the data which you are sending.

Implement like below:

 public class MainCallbackActivity extends Activity implements CallbackFragment.Callback {

@Override
public void setData(String email) {
  //use this email in local (i.e.,in activity class)
   this.email = email;
  }
 }
Saritha G
  • 2,588
  • 1
  • 15
  • 27