[Android] ButterKnife 사용시 주의할 점
java package 이름을 android. 로 시작하게 하면 ButterKnife가 이를 거부하여 처리할 수 없다.
java package 이름을 android. 로 시작하게 하면 ButterKnife가 이를 거부하여 처리할 수 없다.
* 정의부 /** * view 하위의 특정 TableLayout의 TableRow를 순회하면서 EditText를 찾고, * 각 EditText의 id 문자열로 SharedPreferences(혹은 Constants)를 조회한 결과값을 EditText에 채워 넣는다. * * @param rootView * @param tableLayoutId */ public static void fillSavedDataToForm(View rootView, int tableLayoutId) { TableLayout tableLayout = (TableLayout) rootView.findViewById(tableLayoutId); TableRow tableRow; View tmpView; EditText et; String id, key, val;… Read More »
처음에는 json으로 serialize 해서 넘기고 그랬었는데, 이미 편리한 메서드가 존재하고 있었다. fragment.getArguments().putSerializable(“testMap”, testMap); Map testMap = fragment.getArguments().getSerializable(“testMap”);
/** * Fragment를 신규 생성하여 리턴한다. (동적 생성) * * – 추가기능으로 액션바의 타이틀을 arguments 에 넣어준다. * * @param clazz * @param <T> * @return */ public static <T extends BaseFragment> T newFragment(Class<T> clazz){ T ret = null; try { ret = clazz.newInstance(); } catch (java.lang.InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e)… Read More »
http://tyboss.tistory.com/entry/Maven * 위의 링크로 문제를 해결했지만, web.xml 의 정의부는 위의 링크를 따르지 않고 아래의 것으로 했다. <web-app xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” version=”3.0″> (3.1의 경우, 3.0을 3.1로 바꿔주면 된다)
말보다는 코딩! DrawerLayout layout = (DrawerLayout)activity.findViewById(R.id.drawer_layout); Snackbar.make(layout, message, Snackbar.LENGTH_INDEFINITE) .setAction(“설정”, new View.OnClickListener() { @Override public void onClick(View v) { // do something } }).show();
말보다는 코드로! <?xml version=”1.0″ encoding=”utf-8″?> <menu xmlns:android=”http://schemas.android.com/apk/res/android”> <!– 메뉴간 구분선을 위해서 group을 지어 주었음 –> <group android:id=”@+id/menu_01″ android:checkableBehavior=”none”> <item android:id=”@+id/nav_authNew” android:title=”메뉴 1″/> <item android:id=”@+id/nav_authOldApp” android:title=”메뉴 2″ /> <item android:id=”@+id/nav_authOldWeb” android:title=”메뉴 3″ /> </group> <group android:id=”@+id/menu_02″ android:checkableBehavior=”none”> <item android:id=”@+id/nav_APICall” android:title=”메뉴 4″ /> </group> <group android:id=”@+id/menu_03″ android:checkableBehavior=”none”> <item android:id=”@+id/nav_setting” android:title=”메뉴 5″ /> </group> <group android:id=”@+id/menu_04″ android:checkableBehavior=”none”> <item… Read More »
제목 그대로임 /** * 레프트메뉴의 로고이미지에 클릭 이벤트 바인딩 (ButterKnife로 구현하기에 어려워서 원래 방법대로 함) */ private void setNavLogoOnClickListener() { NavigationView navView = (NavigationView)findViewById(R.id.nav_view); View headerView = navView.getHeaderView(0); ImageView logo = (ImageView) headerView.findViewById(R.id.logo_in_nav); logo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((DrawerLayout) findViewById(R.id.drawer_layout)).closeDrawer(GravityCompat.START); // 레프트메뉴 닫기 goMain(); // 메인페이지로 } }); } ※… Read More »
제목 그대로임. 왜 잘 안됐는지는 주석에 표시함. public class APICallResultFragment extends DialogFragment { //===================================== Fragment Lifecycle Callbacks – start ===================================== /** * Only for DialogFragment * * @param savedInstanceState * @return */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.fragment_apicall_result, null); builder.setView(view) .setNegativeButton(“닫기”, new… Read More »
Android 작업을 하는데 REST 통신시 파서로 Gson을 많이들 사용하는 것 같다. 기본설정으로 사용하는데 불편한 점이 좀 있어서 초기화 코드를 하나 기록해 본다. /** * Gson 파서 초기화 * * – json beautify 처리 포함 * – 변환후 일부 특수문자들이 유니코드화 되는 것을 막기 위해 (Base64의 == 라던가..) html ecsape 처리도 넣어줌. */ public static final… Read More »
관성스크롤기능 구현을 위해서 ScrollView 를 레이아웃 최외각에 두고, 그 안에 ConstraintLayout 을 두고, 그 안에 TextView를 넣고 작업한 적이 있었는데, 롱클릭시 텍스트를 선택 가능하게 하기 위해서 textIsSelectable 속성을 true로 주고 별 짓을 다 해도 텍스트 선택이 안되는 문제가 있었다. 그래서 상당시간 삽질을 하다가 ScrollView 를 한 depth 아래로 내렸더니 텍스트 선택이 문제없이 되었다. (결국, ScrollView가 최외각에… Read More »
http://kin.naver.com/qna/detail.nhn?d1id=8&dirId=811&docId=241712115&qb=6rO17ZqM7KCEIFAgTg==&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0
AndroidStudio 에서 LogCat을 보고 있으면 가끔 E/eglCodecCommon 관련 에러로그들이 로그창을 잡아먹는다. (예) E/eglCodecCommon: glUtilsParamSize: unknow param 0x00000bd0 E/eglCodecCommon: **** ERROR unknown type 0x73000f (glSizeof,73) ….. 얘를 안보려면 LogCat 로그찍는 창 우상단의 select box 클릭 > Edit Filter Configuration 클릭 후 필터를 하나 추가하면 된다. 필터 내용은… Log Tag: ^((?!eglCodecCommon).)*$ 요렇게 작성하면 되겠다.… Read More »
* ${line.separator} 를 사용하면서 동시에 에디터 내에서 개행도 해 줌 * 예시 <target name=”create-text-blabla”> <echo file=”test.txt”> 첫째줄 내용 blabla${line.separator} 둘째줄 내용 blabla${line.separator} 셋째줄 내용 blabla </echo> </target>
* 해당 파일의 EOL을 Windows 형식으로 바꾼 후 저장하면 된다. Notepad++ > 편집 > 줄의끝문자(EOL) 변환 > Windows 형식으로 변환
1. AndroidManifest.xml 에서 internet permission 이 들어가 있는지 확인, 없을 경우 추가. <uses-permission android:name=”android.permission.INTERNET” />
https://stackoverflow.com/questions/18299698/how-do-i-run-multiple-instances-of-android-studio
– 출처: https://stackoverflow.com/questions/2800739/how-to-remove-leading-zeros-from-alphanumeric-text – // 간단하게 하면 이렇게 s.replaceFirst(“^0+(?!$)”, “”); // 정규식 객체를 사용하면 이렇게 Pattern.compile(“^0+(?!$)”).matcher(s).replaceFirst(“”); * 참고: 이 방식은 “0000” 같은 문자열이 들어오면 마지막 0 하나는 남겨준다.
– 출처: http://www.acidzazz.com/2012/12/webview.html – Load할 data가 “UTF-8” 일때, WebView mWebView = (WebView)findViewById(R.id.webView1); mWebView.getSettings().setDefaultTextEncodingName(“UTF-8”); // 내 경우는 이건 딱히 추가하지 않음 String str = “한글”; mWebView.loadData(str, “text/html”, “UTF-8”); // Android 4.0 이하 버전 mWebView.loadData(str, “text/html; charset=UTF-8”, null); // Android 4.1 이상 버전
허니컴 이후 버전의 안드로이드는 메인스레드에서 네트워크 호출을 할 수 없다고 한다. 내 경우에는 Activity의 onCreate() 메서드에서 HttpURLConnection 을 사용하려 했을 때 이 오류가 발생하였다. 이럴 경우에는 android.os.AsyncTask 를 상속받은 사용자정의 클래스를 작성하여 별도의 스레드에서 동작하도록 하면 된다.