데스크탑 크롬(chrome) – 안드로이드 폰(android) 원격 디버깅(remote debugging)이 잘 안 될 경우 체크사항.
https://stackoverflow.com/questions/21925992/chrome-devtools-devices-does-not-detect-device-when-plugged-in
https://stackoverflow.com/questions/21925992/chrome-devtools-devices-does-not-detect-device-when-plugged-in
InputStream in = getResources().openRawResource(R.raw.oss_license); StringBuilder sb = new StringBuilder(); Scanner sc = new Scanner(in); while (sc.hasNextLine()) { sb.append(sc.nextLine()).append(“\n”); } sc.close(); String contents = sb.toString(); * /res/raw 디렉토리에 있는 파일은 컴파일되지 않는다고 해서 raw 디렉토리를 별도로 생성하여 oss_license.txt 파일을 그 안에 넣어 둠. * /res/raw 디렉토리 안에 있는 파일을 읽을 수 있는 openRawResource() 메서드를 Android… Read More »
일단 내 경우는 이랬다. – release 버전인데 signature 가 없을 경우 – signature 버전을 v2로 했을 경우 (이건 어떻게 해야 정상 처리되지?)
https://medium.com/@nomanr/constraintlayout-chains-4f3b58ea15bb
<ScrollView xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:app=”http://schemas.android.com/apk/res-auto” xmlns:tools=”http://schemas.android.com/tools” android:layout_height=”fill_parent” android:layout_width=”fill_parent” > <android.support.constraint.ConstraintLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:app=”http://schemas.android.com/apk/res-auto” xmlns:tools=”http://schemas.android.com/tools” android:tag=”buttonParent” android:layout_width=”match_parent” android:layout_height=”match_parent” tools:layout_editor_absoluteY=”81dp” tools:layout_editor_absoluteX=”0dp”> <!– ConstraintLayout 안에 TableLayout을 넣어 보았다 –> <TableLayout android:id=”@+id/tableLayout1″ android:layout_width=”0dp” android:layout_height=”wrap_content” app:layout_constraintLeft_toLeftOf=”parent” app:layout_constraintRight_toRightOf=”parent” app:layout_constraintTop_toTopOf=”parent” android:layout_marginTop=”10dp”> <TableRow android:id=”@+id/tableRow1″ android:layout_width=”match_parent” android:layout_height=”match_parent” android:padding=”5dip”> <TextView style=”@style/FormLabel02″ android:layout_width=”0dp” android:layout_height=”match_parent” android:layout_gravity=”center_vertical” android:layout_weight=”3″ android:gravity=”center_vertical|end” android:text=”호출 서버 : ” /> <RadioGroup xmlns:android=”http://schemas.android.com/apk/res/android” android:id=”@+id/rgSvr” android:layout_width=”0dp” android:layout_height=”wrap_content” android:orientation=”horizontal”… Read More »
탐새끼(^^)… 우상단의 설정 버튼(톱니바퀴) 클릭 후 ‘auto scroll from source’ 를 체크한다.
– package explorer 에 붙여넣으면 사라진다 (왜때문에??) – project explorer 에 붙여넣으면 보존된다. – 붙여넣은 후 git commit 을 해 보면 잘 들어왔는지 알 수 있다.
* 정의부 (MainActivity > Navigation Drawer 생성) protected void onCreate(Bundle savedInstanceState) { … Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // actionbar 좌측에 뒤로가기 화살표 표시 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(drawerToggle); drawerToggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); … } * 정의부 (MainActivity > 뒤로가기… Read More »
인터넷에 널린 유사한 글들을 살짝 수정함. * 뒤로가기 핸들러 정의 package and.bruce.com.handler; import android.app.Activity; import android.content.pm.ApplicationInfo; import android.support.v4.app.ActivityCompat; import android.widget.Toast; import and.bruce.com.App; /** * 뒤로가기 버튼을 두 번 눌렀을 때 앱을 종료하게 하는 핸들러 */ public class BackPressCloseHandler { private long backKeyPressedTime = 0; private static final long checkInterval = 2000; private Toast toast;… Read More »
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”);
말보다는 코딩! 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 »
관성스크롤기능 구현을 위해서 ScrollView 를 레이아웃 최외각에 두고, 그 안에 ConstraintLayout 을 두고, 그 안에 TextView를 넣고 작업한 적이 있었는데, 롱클릭시 텍스트를 선택 가능하게 하기 위해서 textIsSelectable 속성을 true로 주고 별 짓을 다 해도 텍스트 선택이 안되는 문제가 있었다. 그래서 상당시간 삽질을 하다가 ScrollView 를 한 depth 아래로 내렸더니 텍스트 선택이 문제없이 되었다. (결국, ScrollView가 최외각에… Read More »
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 »
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