在下面的代码中,将横向更改为纵向或反之时,“OUT Attendence Marked”显示为toast,并将空值插入数据库。为什么将屏幕更改为横向或纵向是将值插入数据库。
import android.Manifest;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.location.Location;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import org.json.JSONObject;
import cz.msebera.android.httpclient.Header;
public class Attendence extends AppCompatActivity {
Button tv,tv1;
String response;
double originLat=9.9967683,originLon=76.2875376;
Button btnShowLocation;
private Context context = this;
private TextView taska,taskb,usernametitle;
// GPSTracker class
GPSTracker gps;
private static final int CODE_GPS = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_attendence);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, CODE_GPS);
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, CODE_GPS);
}
} else {
}
tv= (Button) findViewById(R.id.in);
tv1=(Button) findViewById(R.id.out);
usernametitle= (TextView) findViewById(R.id.usernametitle);
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
/*
SharedPreferences.Editor editor = pref.edit();
*/
final String userid=pref.getString("userid", null);
final String usernamedisplay=pref.getString("username",null);
usernametitle.setText(usernamedisplay);
Log.e("userid","userid"+userid);
RequestParams params = new RequestParams();
params.put("user_id", userid);
AsyncHttpClient client=new AsyncHttpClient();
client.post("attendance.php", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject responseBody) {
response=responseBody.toString();
Log.e("login","login"+response);
if(responseBody.optString("message").equals("TRUE")) {
String task1= responseBody.optString("task1");
String task2= responseBody.optString("task2");
taska = (TextView) findViewById(R.id.taska);
taska.setText(task1);
taskb = (TextView) findViewById(R.id.taskb);
taskb.setText(task2);
/*
Log.e("task1","task2"+task1+task2);
*/
Toast.makeText(Attendence.this,"OUT Attendence Marked",Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(Attendence.this,"Cannot Be Marked",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseBody, Throwable error) {
}
});
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Incall();//incall
}
private void Incall() {
gps = new GPSTracker(Attendence.this);
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
if(latitude==0.0||longitude==0.0){
Toast.makeText(Attendence.this,"Try Marking Again After Turning GPS ON",Toast.LENGTH_SHORT).show();
}
float[] results = new float[1];
Location.distanceBetween(latitude, longitude, originLat, originLon, results);
Log.e("lat"+latitude,"long"+longitude);
float distanceInMeters = results[0]; //radius
boolean isWithinRange = distanceInMeters < 60;
if (isWithinRange) {
//write your code what ever you wanna perform
RequestParams params = new RequestParams();
params.put("user_id", userid);
params.put("status", "1");
AsyncHttpClient client=new AsyncHttpClient();
client.post("attendance.php", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject responseBody) {
response=responseBody.toString();
Log.e("login","login"+response);
if(responseBody.optString("message").equals("TRUE")) {
Toast.makeText(Attendence.this,"Attendence Marked",Toast.LENGTH_SHORT).show();
/* AlertDialog alertDialog = new AlertDialog.Builder(Attendence.this).create();
alertDialog.setTitle("Attendence");
alertDialog.setMessage("Attendence Marked");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();*/
}
else{
Toast.makeText(Attendence.this,"Cannot Be Marked",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseBody, Throwable error) {
Toast.makeText(Attendence.this,"failed",Toast.LENGTH_SHORT).show();
}
});
Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
/*
Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
*/
}else{
Toast.makeText(getApplicationContext(), "Not in DenInfotech. Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
}
// \n is for new line
}else{
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
gps.showSettingsAlert();
}
}
});
tv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
gps = new GPSTracker(Attendence.this);
// check if GPS enabled
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
float[] results = new float[1];
Location.distanceBetween(latitude, longitude, originLat, originLon, results);
float distanceInMeters = results[0];
boolean isWithinRange = distanceInMeters < 60;
if (isWithinRange) {
/* final Dialog openDialog = new Dialog(getApplicationContext());
openDialog.setContentView(R.layout.dialog);
openDialog.setTitle("Custom Dialog Box");
TextView dialogTextContent = (TextView)openDialog.findViewById(R.id.dialog_text);
ImageView dialogImage = (ImageView)openDialog.findViewById(R.id.dialog_image);
Button dialogCloseButton = (Button)openDialog.findViewById(R.id.dialog_button);
dialogCloseButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
openDialog.dismiss();
}
});
openDialog.show();*/
LayoutInflater inflater = LayoutInflater.from(context);
View dialogLayout = inflater.inflate(R.layout.dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(dialogLayout);
TextView indtruction = (TextView)dialogLayout.findViewById(R.id.text_instruction);
final EditText work1 = (EditText)dialogLayout.findViewById(R.id.task1);
final EditText work2 = (EditText)dialogLayout.findViewById(R.id.task2);
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
builder.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String workjob = work1.getText().toString();
String workjob1 = work2.getText().toString();
Log.e("userInputContent"+workjob,"userInputContent"+workjob);
if(workjob.equals("")){
Toast.makeText(context, "You must enter a name in the field", Toast.LENGTH_LONG).show();
return;
}
RequestParams params = new RequestParams();
params.put("user_id", userid);
params.put("status", 1);
params.put("work1",workjob);
params.put("work2",workjob1);
Log.e("workjob","As"+workjob+workjob1);
AsyncHttpClient client=new AsyncHttpClient();
client.post("time_out.php", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject responseBody) {
response=responseBody.toString();
Log.e("login","login"+response);
if(responseBody.optString("message").equals("TRUE")) {
Toast.makeText(Attendence.this,"OUT Attendence Marked",Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(Attendence.this,"Cannot Be Marked",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseBody, Throwable error) {
Toast.makeText(Attendence.this,"failed",Toast.LENGTH_SHORT).show();
}
});
}
});
AlertDialog customAlertDialog = builder.create();
customAlertDialog.show();
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(customAlertDialog.getWindow().getAttributes());
lp.width = LinearLayout.LayoutParams.MATCH_PARENT;
lp.height = 700;
customAlertDialog.getWindow().setAttributes(lp);
//write your code what ever you wanna perform
Toast.makeText(getApplicationContext(), "Success Complete. Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), " Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
}
// \n is for new line
}else{
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
gps.showSettingsAlert();
}
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case CODE_GPS: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
}
}
}
}
}
答案 0 :(得分:1)
更改方向时,您的活动会重新创建。正如我所看到的,您已编写了用于将数据发送到OnCreate内部服务器的代码,每次更改方向时都会编写代码。
简单的解决方法是每次更改方向时停止活动重新加载。
这可以通过将android:configChanges="orientation"
添加到manifest.xml文件
<activity
android:name=".Attendence"
android:configChanges="orientation"
android:label="" />
我希望这会有所帮助。
答案 1 :(得分:0)
V-Coder是正确的,但似乎你已经在onCreate()中声明了你的Incall()方法,这将导致编译错误。