package com.example.home.multitabapp;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.transition.TransitionManager;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
/**
* Created by home on 2018-01-17.
*/
public class MultitapActivity extends AppCompatActivity {
ImageButton multiBackBtn; //뒤로가기 버튼
Switch multiSwitch1, multiSwitch2; //스위치
ImageView multitapImg1, multitapImg2; //멀티탭 ON/OFF 확인 이미지(검정/빨강)
ImageView changeMutiInfo, multiUpdate; //멀티탭 위치 변경, 업데이트 아이콘
TextView machValueTxt1, machValueTxt2;
TextView totalUseValueTxt2;
//php 변수
private static String TAG = "phptest_MainActivity";
private static final String TAG_JSON="webnautes";
private static final String NUM = "num";
private static final String mA1 ="mA1";
private static final String FLAG1 ="flag1";
private static final String mA2 ="mA2";
private static final String FLAG2 ="flag2";
private TextView mTextViewResult;
ArrayList<HashMap<String, String>> mArrayList;
ListView mlistView;
String mJsonString;
private static int flag1=0, flag2=0;
HashMap<String,String> hashMap;
private static int state1 = 0;
private static int state2 = 0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mutitap_page);
setTitle("멀티탭");
multiBackBtn = (ImageButton)findViewById(R.id.multiBackBtn);
multiSwitch1 = findViewById(R.id.multiSwitch1);
multiSwitch2 = findViewById(R.id.multiSwitch2);
multitapImg1 = findViewById(R.id.multitapImg1);
multitapImg2 = findViewById(R.id.multitapImg2);
changeMutiInfo = findViewById(R.id.changeMutiInfo);
multiUpdate = findViewById(R.id.multiUpdate);
//실행 되면서 서버의 값을 가져와서 init
GetData tasks = new GetData();
tasks.execute("http://192.168.0.12/getjson.php");
//뒤로 가기 버튼 클릭 시00
multiBackBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
TransitionManager.go(MainActivity.mainPage);
}
});
//첫번째 스위치 클릭 시
multiSwitch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
GetData tasks = new GetData();
tasks.execute("http://192.168.0.12/getjson.php");
int value = Integer.parseInt(hashMap.get(FLAG1).toString());
if(value == 1){ //활성화 되지 않았다면 켠다
//서버에 값을 바꿔준다.
multitapImg1.setImageResource(R.drawable.circle_black);
// multiSwitch1.setChecked(false);
state1 = 0;
}
else { //활성화 돼있으면 끈다
multitapImg1.setImageResource(R.drawable.circle_red);
// multiSwitch1.setChecked(true);
state1 = 1;
}
try {
//String param = "flag2=" + URLEncoder.encode(state, "UTF-8");
URL url = new URL("http://192.168.0.12/androidRcv1.php" +"?" +"flag1="+state1);
URLConnection conn = url.openConnection();
conn.setUseCaches(false);
InputStream is = conn.getInputStream();
Scanner scan = new Scanner(is);
int line =1;
while(scan.hasNext()) {
String str = scan.nextLine();
}
Log.d(TAG, "상태 : " + state1);
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG,"전송 에러남..ㅋㅋ");
} finally {
}
}
});
//두번째 스위치 클릭 시
multiSwitch2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
GetData tasks = new GetData();
tasks.execute("http://192.168.0.12/getjson.php");
int value = Integer.parseInt(hashMap.get(FLAG2).toString());
if(value == 1){ //활성화 되지 않았다면 켠다
//서버에 값을 바꿔준다.
multitapImg2.setImageResource(R.drawable.circle_black);
multiSwitch2.setChecked(false);
state2 = 0;
}
else { //활성화 돼있으면 끈다
multitapImg2.setImageResource(R.drawable.circle_red);
multiSwitch2.setChecked(true);
state2 = 1;
}
try {
//String param = "flag2=" + URLEncoder.encode(state, "UTF-8");
URL url = new URL("http://192.168.0.12/androidRcv.php" +"?" +"flag2="+state2);
URLConnection conn = url.openConnection();
conn.setUseCaches(false);
InputStream is = conn.getInputStream();
Scanner scan = new Scanner(is);
int line =1;
while(scan.hasNext()) {
String str = scan.nextLine();
}
Log.d(TAG, "상태 : " + state2);
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG,"전송 에러남..ㅋㅋ");
} finally {
}
}
});
앱에서 SWITCH버튼을 클릭? OFF->ON으로 해주면 앱이 튕기고 NullPointerException현상이 발생합니다...
스위치는 flag1, flag2값을 받아서 켜져있는지 꺼져있는지 확인하구 그 값대로 움직이는데...
자바 및 안드로이드에 대한 기초가 하나도 없어 어디가 null값이고 왜 에러가 생기는지 모르겠습니다..!
도움을 주시면 정말 감사드리겠습니다..!