How to edit paypal activities layout - java

I am using com.paypal.android.MEP.PayPalActivity library. I want to edit layout but I can't access it. How can I edit default layout of this library. I am trying to transfer money from an account to another account. It works correctly but user interface seems bad
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.paypal.android.MEP.CheckoutButton;
import com.paypal.android.MEP.PayPal;
import com.paypal.android.MEP.PayPalActivity;
import com.paypal.android.MEP.PayPalAdvancedPayment;
import com.paypal.android.MEP.PayPalPayment;
import com.paypal.android.MEP.PayPalReceiverDetails;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import project.com.holobech.MainActivity;
import project.com.holobech.R;
import project.com.holobech.app.AppConfig;
import project.com.holobech.app.AppController;
import project.com.holobech.model.UserList;
import project.com.holobech.util.PaypalUtil;
public class PaypalActivity extends ActionBarActivity {
// LogCat tag
private static final String TAG = PaypalActivity.class.getSimpleName();
public final int PAYPAL_RESPONSE = 100;
TextView txtOdullendirEmail;
TextView txtOdullendirAmount;
private ProgressDialog pDialog;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paypal);
// Progress dialog
pDialog = new ProgressDialog(this);
pDialog.setCancelable(false);
txtOdullendirEmail = (TextView) findViewById(R.id.txt_odullendir_email);
txtOdullendirEmail.setText("Ödüllendirilecek E-Posta : " + ProfileFragment.email);
txtOdullendirAmount= (TextView) findViewById(R.id.txt_odullendir_amount);
txtOdullendirAmount.setText("Ödüllendirilecek Miktar : 1$");
Button paypal_button = (Button) findViewById(R.id.paypal_button);
initLibrary();
paypal_button.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
// pay integration here
PayPalButtonClick(ProfileFragment.email, "1");
}
});
}
public void initLibrary() {
PayPal pp = PayPal.getInstance();
if (pp == null) {
pp = PayPal.initWithAppID(this, PaypalUtil.paypal_liv_id,
PayPal.ENV_LIVE);
}
}
public void PayPalButtonClick(String primary_id, String primary_amount) {
// Create a basic PayPal payment
// PayPalPayment newPayment = new PayPalPayment();
// newPayment.setSubtotal(new BigDecimal("1.0"));
// newPayment.setCurrencyType("USD");
// newPayment.setRecipient("npavankumar34#gmail.com");
// newPayment.setMerchantName("My Company");
// Log.d("pavan", "calling intent");
// if( PayPal.getInstance()!=null){
// Log.d("pavan", "in if");
// Intent paypalIntent = PayPal.getInstance().checkout(newPayment,
// this);
// startActivityForResult(paypalIntent, 1);
//
// config reciever1
PayPalReceiverDetails receiver0;
receiver0 = new PayPalReceiverDetails();
receiver0.setRecipient(primary_id);
receiver0.setSubtotal(new BigDecimal(primary_amount));
// adding payment type
PayPalAdvancedPayment advPayment = new PayPalAdvancedPayment();
advPayment.setCurrencyType("TRY");
advPayment.getReceivers().add(receiver0);
Intent paypalIntent = PayPal.getInstance().checkout(advPayment, this);
this.startActivityForResult(paypalIntent, PAYPAL_RESPONSE);
}
#Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("pavan", "response");
if (requestCode == PAYPAL_RESPONSE) {
switch(resultCode) {
case Activity.RESULT_OK:
//The payment succeeded
String payKey =
data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY);
Log.d("pavan", "success "+payKey);
Toast.makeText(getApplicationContext(), "Payment done succesfully ", Toast.LENGTH_LONG).show();
setMoneyTransfer();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getApplicationContext(), "Payment Canceled , Try again ", Toast.LENGTH_LONG).show();
break;
case PayPalActivity.RESULT_FAILURE:
Toast.makeText(getApplicationContext(), "Payment failed , Try again ", Toast.LENGTH_LONG).show();
break;
}
}
}
private void setMoneyTransfer() {
// istek iptali için tag
String tag_string_req = "req_money_transfer";
pDialog.setMessage("Lütfen bekleyin...");
showDialog();
StringRequest strReq = new StringRequest(Request.Method.POST, AppConfig.URL_CONTEST, new Response.Listener<String>() {
#Override
public void onResponse(String response) {
Log.d(TAG, "Para transferi yanıtı : " + response.toString());
hideDialog();
try{
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
// json hatası kontrolü
if (!error) {
// başarılı
Log.d("Response", response.toString());
} else {
// başarısız
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// JSON hatası
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Para transferi Hatası: " + error.getMessage());
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
#Override
protected Map<String, String> getParams() {
// login urle bilgileri gönder
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "money_transfer");
params.put("sender", MainActivity.PROFILE_EMAIL);
params.put("receiver", ProfileFragment.email);
return params;
}
};
// istek kuyruğuna isteği ekle
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
private void showDialog() {
if (!pDialog.isShowing())
pDialog.show();
}
private void hideDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
}

This checkout page layout is default and there is no way you can edit the layout.

Related

Can't delete and create data on Fragment Activity [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 3 years ago.
Improve this question
I'm trying to delete and create a data string from a API webpage but i can't get the error code
I create API website from native php. But i create data on postman work insert and delete data
Code Delete Data
package com.dev.kedaiit.sibooks.ui.kategori;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.dev.kedaiit.sibooks.MainActivity;
import com.dev.kedaiit.sibooks.R;
import com.dev.kedaiit.sibooks.util.AppController;
import com.dev.kedaiit.sibooks.util.ServerAPI;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class DeleteKategori extends AppCompatActivity {
EditText deleteID ;
Button btnDelete;
ProgressDialog pd;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_delete_kategori);
deleteID = (EditText) findViewById(R.id.id_kategori);
btnDelete = (Button) findViewById(R.id.btn_delete);
pd = new ProgressDialog(DeleteKategori.this);
btnDelete.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
deleteData();
}
});
}
private void deleteData()
{
pd.setMessage("Delete Data ...");
pd.setCancelable(true);
pd.show();
StringRequest delReq = new StringRequest(Request.Method.POST, ServerAPI.URL_DELETE_KATEGORI, new Response.Listener<String>() {
#Override
public void onResponse(String response) {
pd.cancel();
Log.d("volley","response : " + response.toString());
try {
JSONObject res = new JSONObject(response);
Toast.makeText(DeleteKategori.this,"Successs" +res.getString("message"), Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
startActivity(new Intent(DeleteKategori.this, KategoriFragment.class));
}
},
new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
Log.d("volley", "error : " + error.getMessage());
Toast.makeText(DeleteKategori.this, "ERROR DELETE DATA", Toast.LENGTH_SHORT).show();
}
}){
#Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<>();
map.put("id_kategori",deleteID.getText().toString());
return map;
}
};
AppController.getInstance().addToRequestQueue(delReq);
}
}
Code Insert Data
package com.dev.kedaiit.sibooks.ui.kategori;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.dev.kedaiit.sibooks.R;
import com.dev.kedaiit.sibooks.util.AppController;
import com.dev.kedaiit.sibooks.util.ServerAPI;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class InsertKategori extends AppCompatActivity {
EditText id_kategori, kategori;
Button btnBatal, btnSimpan;
ProgressDialog pd;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insert_kategori);
/*get data from intent*/
Intent data = getIntent();
final int update = data.getIntExtra("update",0);
String intent_idkategori = data.getStringExtra("id_kategori");
String intent_kategori = data.getStringExtra("kategori");
/*end get data from intent*/
// id_kategori = (EditText) findViewById(R.id.idkategori);
kategori = (EditText) findViewById(R.id.edt_kategori);
btnBatal = (Button) findViewById(R.id.btn_cancel);
btnSimpan = (Button) findViewById(R.id.btn_simpan);
pd = new ProgressDialog(InsertKategori.this);
/*kondisi update / insert*/
if(update == 1)
{
btnSimpan.setText("Update Data");
id_kategori.setText(intent_idkategori);
id_kategori.setVisibility(View.VISIBLE);
kategori.setText(intent_kategori);
}
btnSimpan.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
if(update == 1)
{
Update_data();
}else {
simpanData();
}
}
});
btnBatal.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent main = new Intent(InsertKategori.this,KategoriFragment.class);
startActivity(main);
}
});
}
private void Update_data()
{
pd.setMessage("Update Data");
pd.setCancelable(true);
pd.show();
StringRequest updateReq = new StringRequest(Request.Method.POST, ServerAPI.URL_UPDATE_KATEGORI,
new Response.Listener<String>() {
#Override
public void onResponse(String response) {
pd.cancel();
try {
JSONObject res = new JSONObject(response);
Toast.makeText(InsertKategori.this, ""+ res.getString("message") , Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
startActivity( new Intent(InsertKategori.this,KategoriFragment.class));
}
},
new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
Toast.makeText(InsertKategori.this, "Gagal Insert Data", Toast.LENGTH_SHORT).show();
}
}){
#Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> map = new HashMap<>();
map.put("id_kategori",id_kategori.getText().toString());
map.put("kategori",kategori.getText().toString());
return map;
}
};
AppController.getInstance().addToRequestQueue(updateReq);
}
private void simpanData()
{
pd.setMessage("Menyimpan Data");
pd.setCancelable(true);
pd.show();
StringRequest sendData = new StringRequest(Request.Method.POST, ServerAPI.URL_INSERT_KATEGORI,
new Response.Listener<String>() {
#Override
public void onResponse(String response) {
pd.cancel();
try {
JSONObject res = new JSONObject(response);
Toast.makeText(InsertKategori.this, ""+ res.getString("message") , Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
startActivity( new Intent(InsertKategori.this,KategoriFragment.class));
}
},
new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
pd.cancel();
Toast.makeText(InsertKategori.this, "Gagal Insert Data", Toast.LENGTH_SHORT).show();
}
}){
#Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> map = new HashMap<>();
map.put("id_kategori",id_kategori.getText().toString());
map.put("kategori",kategori.getText().toString());
return map;
}
};
AppController.getInstance().addToRequestQueue(sendData);
}
}
Fragment Kategori
package com.dev.kedaiit.sibooks.ui.kategori;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.dev.kedaiit.sibooks.R;
import com.dev.kedaiit.sibooks.adapter.AdapterDataKategori;
import com.dev.kedaiit.sibooks.model.DataKategori;
import com.dev.kedaiit.sibooks.util.ServerAPI;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class KategoriFragment extends Fragment {
private RecyclerView recyclerView;
private FloatingActionButton floatingActionButton;
private LinearLayoutManager linearLayoutManager;
private DividerItemDecoration dividerItemDecoration;
private List<DataKategori> list;
private RecyclerView.Adapter adapter;
public KategoriFragment() {
// Required empty public constructor
}
#Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_kategori, container, false);
recyclerView = view.findViewById(R.id.recyclerViewKategori);
list = new ArrayList<DataKategori>();
adapter = new AdapterDataKategori(getContext(), list);
linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), linearLayoutManager.getOrientation());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.addItemDecoration(dividerItemDecoration);
recyclerView.setAdapter(adapter);
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
FloatingActionButton delKtg = (FloatingActionButton) view.findViewById(R.id.delKtg);
fab.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), InsertKategori.class);
startActivity(intent);
}
});
delKtg.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(),DeleteKategori.class);
startActivity(intent);
}
});
getData();
return view;
}
private void getData() {
final ProgressDialog progressDialog = new ProgressDialog(getContext());
progressDialog.setMessage("Loading...");
progressDialog.show();
JsonObjectRequest my_request = new JsonObjectRequest(Request.Method.GET, ServerAPI.URL_DATA_KATEGORI, null, new Response.Listener<JSONObject>() {
#Override
public void onResponse(JSONObject response) {
try{
JSONArray jsonArray = response.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject Jobj = jsonArray.getJSONObject(i);
DataKategori obj = new DataKategori();
obj.setId_kategori(Jobj.getString("id_kategori"));
obj.setKategori(Jobj.getString("kategori"));
list.add(obj);
}
} catch (JSONException e) {
e.printStackTrace();
progressDialog.dismiss();
}
adapter.notifyDataSetChanged();
progressDialog.dismiss();
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
Log.e("Volley", "Error: " + error.getMessage());
progressDialog.dismiss();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(my_request);
}
}
https://github.com/bellabeen/sibooks-client This project me get this in the logcat and when i dont get error code
Your code is almost fine. You just missed one thing. You did not initialize VolleyRequest. Inside simponData and UpdateData methods write this line at the bottom.
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(my_request);
instead of AppController.getInstance().addToRequestQueue(updateReq).
other thing is you are calling the fragment in intent from when response is received .You should call onbackPress() when result is recieved successfully.
new Response.Listener<String>() {
#Override
public void onResponse(String response) {
pd.cancel();
try {
JSONObject res = new JSONObject(response);
Toast.makeText(InsertKategori.this, ""+ res.getString("message") , Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
onBackPressed();
}
},
It will restore the previous fragment. In order to update the KategoriFragment view when successful response is received, you can call the getData() method in onResume() method instead of oncreate(). it will call this method whenever fragment is visible to the use

How to fix org.json.JSONException: on Volley?

I am developing Login on android via connection with php (web).
Code
package com.example.salmakhalil.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class LoginActivity extends AppCompatActivity {
private EditText email,password;
private Button btn_login;
private TextView link_regist;
private ProgressBar loading;
private static String URL_LOGIN="http://192.168.8.101/android_register_login/login.php";
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loading=findViewById(R.id.loading);
email=findViewById(R.id.email);
password=findViewById(R.id.password);
btn_login=findViewById(R.id.btn_login);
link_regist=findViewById(R.id.link_regist);
btn_login.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
String mEmail=email.getText().toString().trim();
String mPass=password.getText().toString().trim();
if (!mEmail.isEmpty() || !mPass.isEmpty()){
Login(mEmail,mPass);
}
else {
email.setError("Please insert email");
password.setError("Please insert Password");
}
}
});
link_regist.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}
});
}
private void Login(String email, String password){
loading.setVisibility(View.VISIBLE);
btn_login.setVisibility(View.GONE);
//I think here facing a problem
StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
new Response.Listener<String>() {
#Override
public void onResponse(String response) {
try {
JSONObject jsonObject=new JSONObject(response);
String success = jsonObject.getString("success");
JSONArray jsonArray=jsonObject.getJSONArray("login");
if (success.equals("1")) {
for (int i=0; i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
String name = object.getString("name").trim();
String email=object.getString( "email").trim();
Toast.makeText(LoginActivity.this,
"Success Login. \nYour Name : "
+name+"\nYour Email : "
+email, Toast.LENGTH_SHORT)
.show();
loading.setVisibility(View.GONE);
}
}
} catch (JSONException e) {
e.printStackTrace();
loading.setVisibility(View.GONE);
btn_login.setVisibility(View.VISIBLE);
Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
Toast.LENGTH_SHORT).show();
}
})
{
#Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("email", email);
params.put("password", password);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
When I click on the login Button, its showing thee error
org.json.JSONException: No value for success.
I'm all the day trying to fix it. I have read other posts on Stack, no one helped me. I hope you can help me. Thanks.
Apparently the jsonObject your receive in onResponse() does not have a value for entry "success"
You should use the method jsonObject.optString("success"); instead of jsonObject.getString("success");
optString("success") returns the empty string ("") if the key "success" doesn't exist. getString("success") on the other hand throws a JSONException.
Can you share the response that is supposed to get. I think the response doesn't contain any field name "success". Query on postman to get response otherwise talk to your back end developer.

Retrofit null response

Hello me and my group from university decide to create an app, that a client of a gym can see his/her exercise list and we are using retrofit to get a json. Early this code was working very well, but suddenly stopped to work, and now I'm getting null response and status 200 from callback.
image with the log.d 200 and null response
Sorry for my english.
My JSON
{
"0":{
"id":"1",
"nome":"Fernanda Kondrat",
"peso":"67.4",
"altura":"172",
"imc":"22.8",
"login":"fefe",
"senha":"1234"},
"lista_exercicios":[
{
"id":"1",
"id_aluno":"1",
"nome":"supino reto",
"num_serie":"3",
"num_repeticao":"10"
},
{
"id":"2",
"id_aluno":"1",
"nome":"agachamento hack",
"num_serie":"3",
"num_repeticao":"10"
},
{
"id":"3",
"id_aluno":"1",
"nome":"barra fixa",
"num_serie":"3",
"num_repeticao":"10"
},
{
"id":"4",
"id_aluno":"1",
"nome":"leg press",
"num_serie":"4",
"num_repeticao":"10"
}
]
}
And now my MainActivity.java
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.u9.fabapp.virtualgym.APIClient;
import com.u9.fabapp.virtualgym.RespostaLogin;
import com.u9.fabapp.virtualgym.Resposta;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
public class MainActivity extends AppCompatActivity {
Button btn_login;
EditText edt_login;
EditText edt_senha;
private Callback<RespostaLogin> respostaCallback;
private static final String TAG = "MainActivity";
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_login = findViewById(R.id.btn_login);
edt_login = findViewById(R.id.edt_Login);
edt_senha= findViewById(R.id.edt_Senha);
btn_login.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
//Log.d(TAG, "onClick: ");
//Intent i = new Intent(MainActivity.this, ProfileActivity.class);
//startActivity(i);
String login = edt_login.getText().toString();
String senha = edt_senha.getText().toString();
if(TextUtils.isEmpty(login)|| TextUtils.isEmpty(senha)) {
Toast.makeText(MainActivity.this, "Campos vazios", Toast.LENGTH_SHORT).show();
} else {
configurarCallback();
//new APIClient().getRestService().setUsuarioLoginDTO(login, senha, respostaCallback);
new APIClient().getRestService().setUsuarioLoginDTO(login, senha, respostaCallback);
}
}
});
}
private void configurarCallback() {
respostaCallback = new Callback<RespostaLogin>() {
#Override
public void success(RespostaLogin resposta, Response response) {
Log.d(TAG, "Funcionou: "+ response.getStatus());
Log.d(TAG, "Funcionou: " + resposta.getRETORNO());
/*if (resposta.getRETORNO().equals("SUCESSO")){
Intent intent1 = new Intent(MainActivity.this, ProfileActivity.class);
startActivity(intent1);
}else{
Toast.makeText(MainActivity.this, resposta.getRETORNO() +" ,Verifique usuário e senha" , Toast.LENGTH_SHORT).show();
}*/
}
#Override
public void failure(RetrofitError error) {
Toast.makeText(MainActivity.this, "Deu Ruim: " + error.getMessage(), Toast.LENGTH_SHORT).show();
}
};
}
}
APIClient.java
import com.u9.fabapp.virtualgym.Resposta;
import com.u9.fabapp.virtualgym.RespostaLogin;
import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.client.OkClient;
import retrofit.http.GET;
import retrofit.http.Query;
import retrofit.http.Path;
public class APIClient {
private static RestAdapter REST_ADAPTER;
public APIClient(){
createAdapterIfNeeded();
}
private static void createAdapterIfNeeded() {
if(REST_ADAPTER == null){
REST_ADAPTER = new RestAdapter
.Builder()
.setEndpoint("http://golfetto.16mb.com/virtual-fit/home/")
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient())
.build();
}
}
public RestServices getRestService(){
return REST_ADAPTER.create(RestServices.class);
}
public interface RestServices{
#GET("/getExercicios.php")
void setUsuarioLoginDTO(
#Query("LOGIN") String login,
#Query("SENHA") String senha,
Callback<RespostaLogin> callbackResposta
);
}
}
In interface "RestService", change at:
#GET("/getExercicios.php")
Modify it as:
#GET("getExercicios.php")
Remove "/" because it is being already being appended.
Thanks and happy coding
The full URL of your service will be
BASE_URL (defined at the time of createing retrofit object) + END_POINT_URL (defined in the interface)
You have added "http://golfetto.16mb.com/virtual-fit/home/" as base URL and in the interface you have define the endpoint as "/getExercicios.php" so the full URL will be
"http://golfetto.16mb.com/virtual-fit/home//getExercicios.php"
which is not a valid URL. So you have to remove '/' from the interface
The interface will be
public interface RestServices{
#GET("getExercicios.php")
void setUsuarioLoginDTO(
#Query("LOGIN") String login,
#Query("SENHA") String senha,
Callback<RespostaLogin> callbackResposta
);
}

How to Bind Json Data into Mpandroid Bar Chart in Android?

Json Data:
[
{
"NAME":"601 GRIETA EN CUERPO",
"PERCENTAGE":"46"
},
{
"NAME":"77 ENFRIAMIENTO O DUNTING",
"PERCENTAGE":"18"
},
{
"NAME":"78 PRECALENTAMIENTO",
"PERCENTAGE":"18"
},
{
"NAME":"209 MAL MANEJO",
"PERCENTAGE":"9"
},
{
"NAME":"92 FUGA DE MANOMETRO",
"PERCENTAGE":"9"
}
]
Bar Chart.Java
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.utils.ColorTemplate;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class barchart extends AppCompatActivity {
BarChart chart ;
ArrayList<BarEntry> BARENTRY ;
ArrayList<String> BarEntryLabels ;
BarDataSet Bardataset ;
BarData BARDATA ;
private String TAG = MainActivity.class.getSimpleName();
private ProgressDialog pDialog;
private static String url = "http://113.193.30.155/MobileService/MobileService.asmx/GetSampleData";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bar_chart);
new GetContacts().execute();
// bar chart
chart = (BarChart) findViewById(R.id.barchart);
}
private class GetContacts extends AsyncTask<Void, Void, Void> {
#Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(barchart.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
#Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url);
Log.e(TAG, "Response from url: " + jsonStr);
if (jsonStr != null) {
try {
JSONArray array = new JSONArray(jsonStr);
for (int i = 0; i < array.length(); i++) {
JSONObject object = (JSONObject) array.get(i);
String NAME = object.getString("NAME");
String PERCENTAGE = object.getString("PERCENTAGE");
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
#Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
#Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
#Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
}
}
}
Help me to bind JSON data into bar chart in android. Thanks in advance.

Web service call from android using DataDroid library not returning data to activity

Below I've listed my activity code, call out to the web service, and the json parsing class I created to parse the web service results. I'm trying to pass a user object back to the activity to determine what they can/can't do, however, I'm not getting past the "after execute" log statement. onRequestFinished never gets called which is where I would have expected it to end up. Any help would be greatly appreciated as there doesn't seem to be much activity with DataDroid...
LoginActivity.java
package com.motosho.ui;
import com.foxykeep.datadroid.requestmanager.Request;
import com.foxykeep.datadroid.requestmanager.RequestManager.RequestListener;
import com.motosho.R;
import com.motosho.data.model.User;
import com.motosho.data.requestmanager.RequestFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Intent;
public final class LoginActivity extends DataDroidActivity implements RequestListener,
OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
bindViews();
}
protected void onResume() {
super.onResume();
for(int i=0; i < mRequestList.size(); i++) {
Request request = mRequestList.get(i);
if(mRequestManager.isRequestInProgress(request)) {
mRequestManager.addRequestListener(this, request);
setProgressBarIndeterminateVisibility(true);
} else {
mRequestManager.callListenerWithCachedData(this, request);
i--;
mRequestList.remove(request);
}
}
}
protected void onPause() {
super.onPause();
if(!mRequestList.isEmpty()) {
mRequestManager.removeRequestListener(this);
}
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
private void bindViews() {
((Button) findViewById(R.id.sign_in_button)).setOnClickListener(this);
}
private void callLoginWS(String username, String pin, String eventId) {
Log.i("LOGIN", "in callLoginWS - username=" + username + ", pin=" + pin + ", eventid=" + eventId);
setProgressBarIndeterminateVisibility(true);
Request request = RequestFactory.getLoginRequest(username, pin, eventId);
mRequestManager.execute(request, this);
Log.i("LOGIN", "after execute");
mRequestList.add(request);
}
public void onClick(View view) {
switch(view.getId()) {
case R.id.sign_in_button:
EditText emailText = (EditText) findViewById(R.id.email);
EditText pinText = (EditText) findViewById(R.id.pin);
Log.i("LOGIN","set email and pin text");
callLoginWS(emailText.getText().toString(), pinText.getText().toString(),"9");
break;
}
}
#Override
public void onRequestFinished(Request request, Bundle resultData) {
Log.i("LOGIN", "inside onRequestFinished");
if(mRequestList.contains(request)) {
setProgressBarIndeterminateVisibility(false);
Log.i("LOGIN", "request found");
mRequestList.remove(request);
Toast toast = Toast.makeText(this, "request finished", Toast.LENGTH_SHORT);
toast.show();
User user = resultData.getParcelable("user");
if(user != null) {
startActivity(new Intent(this, MainActivity.class).putExtras(resultData));
}
}
}
#Override
public void onRequestConnectionError(Request request, int statusCode) {
Log.i("LOGIN", "onRequestConnectionError");
if(mRequestList.contains(request)) {
setProgressBarIndeterminateVisibility(false);
//show error
Toast toast = Toast.makeText(this, "connection error", Toast.LENGTH_SHORT);
toast.show();
mRequestList.remove(request);
}
}
#Override
public void onRequestDataError(Request request) {
Log.i("LOGIN", "onRequestDataError");
if(mRequestList.contains(request)) {
setProgressBarIndeterminateVisibility(false);
mRequestList.remove(request);
//show error
Toast toast = Toast.makeText(this, "data error", Toast.LENGTH_SHORT);
toast.show();
}
}
#Override
public void onRequestCustomError(Request request, Bundle resultData) {
// Never called
}
public void connectionErrorDialogRetry(Request request) {
Log.i("LOGIN", "connectionErrorDialogRetry");
String username = request.getString("username");
String pin = request.getString("pin");
String eventId = request.getString("eventid");
callLoginWS(username,pin,eventId);
}
}
LoginOperation.java
package com.motosho.data.operation;
import java.util.HashMap;
import android.content.Context;
import android.os.Bundle;
import com.foxykeep.datadroid.exception.ConnectionException;
import com.foxykeep.datadroid.exception.CustomRequestException;
import com.foxykeep.datadroid.exception.DataException;
import com.foxykeep.datadroid.network.NetworkConnection;
import com.foxykeep.datadroid.network.NetworkConnection.ConnectionResult;
import com.foxykeep.datadroid.network.NetworkConnection.Method;
import com.foxykeep.datadroid.requestmanager.Request;
import com.foxykeep.datadroid.service.RequestService.Operation;
import com.motosho.config.WSConfig;
import com.motosho.data.factory.LoginJsonFactory;
public final class LoginOperation implements Operation {
#Override
public Bundle execute(Context context, Request request)
throws ConnectionException, DataException, CustomRequestException {
HashMap<String, String> params = new HashMap<String, String>();
params.put("username", request.getString("username"));
params.put("pin", request.getString("pin"));
params.put("eventid", request.getString("eventid"));
NetworkConnection networkConnection = new NetworkConnection(context, WSConfig.WS_LOGIN_URL);
networkConnection.setMethod(Method.POST);
networkConnection.setParameters(params);
ConnectionResult result = networkConnection.execute();
return LoginJsonFactory.parseResult(result.body);
}
}
LoginJsonFactory.java
package com.motosho.data.factory;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.util.Log;
import com.foxykeep.datadroid.exception.DataException;
import com.motosho.config.JSONTag;
import com.motosho.data.model.User;
public final class LoginJsonFactory {
private static final String TAG = LoginJsonFactory.class.getName();
private LoginJsonFactory() { }
#SuppressWarnings("null")
public static Bundle parseResult(String wsResponse) throws DataException {
User user = new User();
try {
JSONObject parser = new JSONObject(wsResponse);
JSONObject jsonRoot = parser.getJSONObject(JSONTag.USER_ELEM);
user.firstName = jsonRoot.getString(JSONTag.USER_ELEM_FIRST_NAME);
user.lastName = jsonRoot.getString(JSONTag.USER_ELEM_LAST_NAME);
user.phoneNumber = jsonRoot.getString(JSONTag.USER_ELEM_PHONE_NUMBER);
user.role = jsonRoot.getString(JSONTag.USER_ELEM_ROLE);
JSONArray jsonPositionsArray = jsonRoot.getJSONArray(JSONTag.USER_ELEM_LIST_POSITIONS);
int size = jsonPositionsArray.length();
List<String> tempPositionsArray = null;
for (int i=0; i < size; i++) {
tempPositionsArray.add(jsonPositionsArray.getString(i));
}
user.positions = tempPositionsArray;
JSONArray jsonCapabilitiesArray = jsonRoot.getJSONArray(JSONTag.USER_ELEM_LIST_CAPABILITIES);
size = jsonCapabilitiesArray.length();
List<String> tempCapabilitiesArray = null;
for(int i=0; i < size; i++) {
tempCapabilitiesArray.add(jsonCapabilitiesArray.getString(i));
}
user.capabilities = tempCapabilitiesArray;
} catch (JSONException e) {
Log.e(TAG, "JSONException", e);
throw new DataException(e);
}
Bundle bundle = new Bundle();
bundle.putParcelable("user", user);
return bundle;
}
}

Categories

Resources