지식메모/안드로이드 Android

반응형




진짜 뭐 좀 테스트 해볼려고 프로젝트 새로 생성했는데 하자마자 문제가 뙇!!!!!!!


제일 싫어하는 상황이다. 뭐 해보기도 전에 문제 생기는거..


검색을 해보니 다양한 해결 방법이 있었는데 먼저 가장 많이 보였던 방법으로


R.java 파일이 있다면...


코드의 위쪽에 보면


 import android.R;


이 선언되어 있다. 이 코드를 지운다.


   직접 만든 리소스를 참조할 때는 import 패키지명.R; 요렇게 선언해야 한다.


예를 들면

R.java 있으면 패키지명 수정 com.example.ex.R



BUT


나는 파일 자체가 없었다. 왜 없어진건지 모르겠다. clean 하면서 없어지는 경우가 있다고 한다. 

clean을 했던거 같기도 하고 ..


문제는 R.java 파일이 없어서 생기는 문제인거 같았다


▲ gen 폴더에 아무 것도 없다!!




에러가 뜬다..


▲ R 에 빨간 줄이 표시됐다..




검색을 해보니 프로젝트 > Properties > Java Build Path 에 가서

Order and Export 탭에서 Android 버전을 최상위로 올리면 된다고 한다.


▲ Android 4.2.2 를 선택 후 오른쪽 top을 눌러 맨 위로 위치시킨다.




▲ Android 4.2.2 를 최상위로 올리는 모습



 

올리기 전

  

 

올린 후

▲ Android 4.2.2 가 맨 위로 올라간 모습


Project - Clean(단축키 Alt+P+N)'으로 재컴파일하면 'R.java' 파일이 재생성된다.


이렇게만 해주면 된다고 한다. 근데 나는??

변화가 없다.



그래서 이클립스 상단 메뉴 Project > Build Project 를 해주었다.

(만약 비활성화 되어있다면 Build Automatically를 해제해준다)



안 생겼다면  Build Automatically 체크해본다.


뭐 어쨌든 프로젝트 clean 이후 다시 빌드하기를 왔다갔다 하다보니



그랬더니 생겼다!!


▲ gen 폴더에 R.java가 생겼다




에러도 없어졌다

▲ 깔끔



그래도 안된다면.. 프로젝트에서 gen 을 살펴보자




저 꼴도 보기 싫은 appcompat 이 사라지진 않았는지 보자.

어디서 구할 수 있다면 appcompat 프로젝트 안에서 저걸 복사해서 붙여넣기 하는 것도 방법인 것 같다.


appcompat_v7.zip


일단 첨부.

아니면 sdk 폴더에서

/extras/android/support/v7/appcompat/ 

위 경로의 프로젝트를 import 한다.



마찬가지로 프로젝트의 R.java 파일도 다른 프로젝트에서 복사 붙여넣기 시도해본다.



진짜 이거 아오 빡친다.

이거 롤리팝인지 킷캣부터 이상한거 생기더니 골치만 아파졌다.


문제의 원인은 정말 다양해서 이 방법으로 해결 안 될 수도 있다.

검색해보면 다양한 방법이 나오는데 이 방법으로 해결을 했으나

다른 컴에서 또 발생했을 때는 해결이 안됐다.


전에 백업해놓은 프로젝트가 있어서 그걸 다시 불러왔다.


검색하면 서로 이렇게 하면 된다 하는데 왜 꼭 내가 하면 다 안될까?


오늘도 별 것도 아닌데 시간낭비...




반응형
반응형




안드로이드 xml 파일을 보기 위해서 graphical Layout 을 자주 보곤 하는데 갑자기 안뜬다.


Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V in Android



뭐 이런 내용이 뜨는데 왜 그런가 해서 삽질하다가 검색하니까 알았다.


상단에 안드로이드 아이콘을 보면 처음에 API 20으로 되어있었다.


얼마 전에 이클립스 새로 깔면서 업데이트 했었었다.


그래서 원래 API 19로 바꿔주었더니 graphical layout 이 다시 떴다.




아무튼 최신버전이 새로 나오면 골칫거리가 많다.


지금도 또 뭔가 안되는데 미치겠다









반응형
반응형








이건 또 뭐임...


아 진짜 업데이트할 때가 제일 짱난다. 뭐 건드리면 또 생기고..



아무튼 빨리 또 검색..


그나마 이건 빨리 해결됐다


Project > Build Automatically 를 해제해 주면 된다고 한다.

이거 건드린 적도 없었는데..



움짤 ㄱㄱ




이제야 모든 에러가 잡혔다. 아니 그냥 안보이게 감춰둔 것일 수도..

잠복기를 거치다 나중에 또 크게 터지는거 아닌가 두렵다.



여기까지 오게 된 사연은

이클립스에서 google-play-services_lib 이거 때문에 SDK 를 업데이트 했는데

계속 


This Android SDK requires Android Developer Toolkit Version 23.0.0 or above


이 버전 문제 때문에 import를 할 수가 없어서골머리 앓다가


컴터 쓴지 오래되서 걍 포맷해버리고 이클립스 새로 깔면서 이렇게 됐다


분명 나는 23.0.2로 23.0.0보다 높은 버전인데도 말이다.



Cannot complete the install because of a conflicting dependency


이 메시지로 검색해보면 많은 방법이 나오는데 내가 잘 못하는 건지 해결이 안됐다..

답 없으면 싹 밀었다 다시 하는 방법 밖에는..


그래서 삭제하고 재설치도 해봤지만 부질없는 짓이었다.




여러 방법을 써봤는데 해결이 안됐다.

결국 새로설치로 해결을 했지만..


혹시 아시는 분이 계시다면 해결책을 알고 싶다.





반응형
반응형







exprot aborted because fatal lint error


project has compliation error


 is not translated in ko 


짱나




뭔가 엄청나보이는 문제가...


String.xml은 지금까지 멀쩡했었다. 그런데 갑자기 실행하려니까 이런 에러가 뜨면서 안된다.


또 급 빡...


다시 검색해보니..


이클립스 메뉴에서 Window > Preferrence > Android >Lint Error Checking 

 옵션으로 가서 체크해제해줘야 된다고 한다.




그러면 된다고 해서 해봤는데 여전하다..


그래서 답답해서 Restore Defaults 하고 Apply 했다.


그런데 없어졌다..

느낌표



위에 Run error full check 를 하고 해결된 사람들도 있으니 이거 먼저 해보고 

안되면 Restore Defaults 해보는 것을 추천드립니다.



이제 다 끝났나 보다 하고 이제 서명된 APK 생성을 시작했는데 또 문제 발생...


부글부글



conversion to Dalvik format failed with error 1


뭔데 이건 또...

이것도 다음 글에..





반응형
반응형




구글 정책이 뭔가 바꼈다고 해서 라이브러리를 추가할 일이 생겼는데 시작부터 골치가 아프다.


진짜 뭔가 수정사항 생기면 두려움이 먼저 앞선다..


수정사항은 앱 프로젝트에 google-play-services_lib 를 추가해줘야 된다는 것이었다.



그래서 매뉴얼 대로 추가해주었다.







그러나 문제 또 발생..


메니페스트 파일에 문장을 추가해줬는데 여기서 에러가 나는 것이었다..



에러메시지는

error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').




다시 들어가 보니 라이브러리가 제대로 안되어있었다.







인터넷에 물어보고 메일도 담당자 메일도 보내봤는데 원인은 라이브러리 경로 때문이라고 한다.

google-play-services_lib 프로젝트를 workspace로 import한 다음에 add 하면 된다고 한다.



그랬다. 현재 앱 프로젝트는 E: 드라이브에 있었고 google-play-services_lib는 C: 드라이브에 있었다.


google-play-services_lib 경로.

C:\eclipse\adt-bundle-windows-x86_64-20140702\sdk\extras\google\google_play_services\libproject\google-play-services_lib


그래서 E:에 있는 앱 프로젝트를 그냥 컨트롤 C 해서 workspace 에 붙여넣고 다시 import 했더니..





뚜쉬...







아나 또 생전 첨보는 에러가 떴다.


그래서 다시 또 질문하고 검색했더니 

workspace에 앱프로젝트와 google-play-services_lib 프로젝트가 같이 있어야 한다는? 결론을 얻었다.



그 방법으로 찾아 낸 것이 Copy projects into workspace 였다.


프로젝트를 import 할 때 이 옵션을 체크해주라는 것이다.




앱 프로젝트 import 할 때







google-play-services_lib 프로젝트 import 할 때






그러면 workspace 폴더에 가보면 두 프로젝트가 나란히 있는 것을 볼 수 있다.


에러도 없어졌고 하니 이제 잘 되나 Run을 해보았는데..


또 문제 발생..


exprot aborted because fatal lint error


project has compliation error


??


String.xml 에 엄청난 에러가 뜬다.

in not translated in ko...


이 문제는 다음 글에..


http://yonoo88.tistory.com/524






반응형
반응형



스피너 값을 특정 값으로 지정하고 싶다면


해당 특정 값의 순서로 지정할 수 있다.


해당스피너변수.setSelection(특정 값 순서);


예를 들면


name 이라는 스피너를 선언했고


스피너 목록에는 


성시경

윤하

태연


이렇게 3개가 있다고 가정하자



그런데 스피너 초기 값을 별도로 지정하지 않으면 성시경으로 될 것이다.


하지만 태연으로 지정해주고 싶다.


그렇다면


name.setSelection(2);


라고 해주면 된다.


항상 시작은 0번째부터 시작이니 태연은 0,1,2 순으로 2번이기 때문이다.


onClick 메소드에 추가해주거나 특정 동작을 할 때 이 코드를 넣어주면 초기 값이 바뀐다.


반응형
반응형



안드로이드 팝업창 띄우기


일단 팝업창 띄우기 예제는 많기는 한데 용도가 경고하거나 알림용이다


나는 그런 용도보다는 설명용이라 아예 xml파일을 팝업창에 보여주고 싶었다.


우선 팝업창을 만드는 작업이 필요하다.





일단 팝업창 띄우기 위한 버튼


버튼을 만들 xml파일에 만들어준다.

ex)hidden.xml



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/alert"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="히든설명" />
  
</LinearLayout>



이제 액티비티 설정부분

버튼 만든 해당 액티비티에 만들어준다.


ex)HiddenActivity.java



import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MessageDemo extends Activity implements View.OnClickListener{
	Button alert; //팝업버튼선언

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		//팝업버튼 설정
		alert=(Button)findViewById(R.id.alert);//R.id.alert는 팝업버튼 아이디
		alert.setOnClickListener(this);
		
	}
	public void onClick(View view){
		if(view==alert){ //view가 alert 이면 팝업실행 즉 버튼을 누르면 팝업창이 뜨는 조건
			new AlertDialog.Builder(this)
			.setTitle("히든목록") //팝업창 타이틀바
			.setMessage("FinessShot")  //팝업창 내용
			.setNeutralButton("닫기",new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dlg, int sumthin) {
					//닫기 버튼을 누르면 아무것도 안하고 닫기 때문에 그냥 비움

				}
			})
			.show(); // 팝업창 보여줌
		}
		
	}
}





여기까지 해주면 히든설명 이라는 버튼을 누르면 팝업창이 뜨게된다.



하지만 팝업창에서 보여줄 내용이 많을때 이렇게 하면 내용이 짤리고 공간이 부족했다.



그래서 이제부터 xml파일을 하나 만들고 그 내용들을 팝업창에 보여주도록 할 것이다.


우선 팝업창에 보여줄 xml파일을 따로 만든다


ex) dialog.xml


내용이 길어서 스크롤뷰를 적용하였다.

23번째 줄 android:text= "여기에 표시해줄 내용을 쓴다"




<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/popup" <!-- 아이디 선언, 액티비티에서 필요함-->
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#191A19"
    android:orientation="vertical"
    tools:context=".HiddenActivity" > <!--해당 액티비티 선언-->    
     <LinearLayout
       
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
   
       
    <TextView
       
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textColor="#B4B4B4"
       android:layout_gravity="center"
       android:textSize="15sp"
       android:text=" -Argues With Officials : 애매한 판정일 경우 심판과 언쟁을 함\n\n -Avoids Using Weaker Foot : 약한발은 잘 사용하지 않음\n\n -Cautious With Crosses : 코너킥 및 크로스에 대해 인터셉트 시도 보단 골 라인을 지키려 한다\n\n -Comes For Crosses : 코너킥 및 크로스에 대해 적극적으로 인터셉트를 시도한다\n\n -Corner Specialist : 코너킥 시 좀더 많은 골 찬스를 발생시킴 \n\n -Counter Attacker : 역습상황으로 전환할때의 반응속도가 향상됨\n\n -Diver : 태클을 당하면 넘어지면서 반칙을 유도함\n\n -Dives Into Tackles : 슬라이딩 태클을 자주 시도함\n\n -Early Crosser : 얼리크로스 능력치 뛰어남\n\n -Fancy Feet : 보다 정교하고 화려한 퍼스트 터치 발동\n\n -Finesse Header : 정확한 헤딩을 시도함\n\n -Finesse Shot : 정확한 슛팅을 시도함\n\n -Flair : 공을 받거나 받은 후에 일정한 공간과 시간이 있다면 자발적으로 트릭을 사용함\n\n -Forward pushes wide left : 공격시 왼쪽을 선호하는 움직임\n\n -Forward pushes wide Right : 공격시 오른쪽을 선호하는 움직임\n\n -Giant Thorw in : 드로잉을 아주 멀리 던짐 \n\n -GK Long Throw : 골킥을 멀리 찰 수 있음\n\n -GK One On One : 1:1상황에서의 방어능력이 뛰어남\n\n -GK Puncher : 펀칭의 능력이 뛰어나고 자주시도함\n\n -GK up for Corners : 키퍼가 경기종료시간이 얼마 안남았을때 코너킥 상황에 공격하러 올라감\n\n -Heel Passer : 힐패스능력이 뛰어남\n\n -High Determination : 지고있는 상황에서 일관성 상향\n\n -Holds Up : 공격상황에서 몸싸움 경합시 밸런스 상향..."
       android:textStyle="bold"
       android:typeface="normal" />
    </LinearLayout>

    
    </ScrollView>




이제 액티비티에 코드를 수정하자


HiddenActivity.java 파일로 돌아가서 onClick 함수에서 선언한 부분을 수정한다.





public void onClick(View view){
		if(view==alert){ //view가 alert 이면 팝업실행 즉 버튼을 누르면 팝업창이 뜨는 조건
			Context mContext = getApplicationContext();
			LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);

			//R.layout.dialog는 xml 파일명이고  R.id.popup은 보여줄 레이아웃 아이디
			View layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.popup));
			AlertDialog.Builder aDialog = new AlertDialog.Builder(CustomActivity.this);
		
			aDialog.setTitle("히든스탯 목록"); //타이틀바 제목
			aDialog.setView(layout); //dialog.xml 파일을 뷰로 셋팅
		
			//그냥 닫기버튼을 위한 부분
			aDialog.setNegativeButton("닫기", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
			}
		});
		//팝업창 생성
		AlertDialog ad = aDialog.create();
		ad.show();//보여줌!
	}




이렇게 해준 뒤 실행해보면





이런 식으로 스크롤 뷰로 팝업창에 나타난다. 

한마디로 팝업창안에 xml 파일내용이 들어가서 보여준다.



반응형
반응형



안드로이드에서 에디트텍스트에 문자를 입력하면 자동완성으로 리스트를 보여주는 기능이다.


이 방법보다 더 나은게 있을지도 모르지만 데이터가 많을 경우 노가다가 필요한 작업인거 같다.


일단 급한대로 이걸 썼다.


국기 이미지 때문에 쓴건데 국가가 너무 많아서 힘들었다 ㅠㅠ


먼저  custom.xml 작업부분

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    <AutoCompleteTextView

        android:layout_height="wrap_content"

        android:layout_width="fill_parent"

        android:id="@+id/edit_national"

        android:hint="Type some text here"/>

</LinearLayout>



그리고 자바 부분에서


import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;


public class CustomActivity implements OnClickListener{

	

	private AutoCompleteTextView autoText;
  	private ArrayList<String> list;
   	private ArrayAdapter<String> adapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.custom);//해당 xml
	
	autoText= (AutoCompleteTextView)findViewById(R.id.edit_national);

        list = new ArrayList<String>();
        list.add("가나"); //리스트에 문자열을 하나씩 넣는다.자동완성에 필요한 값들이다.
        list.add("가봉");
        list.add("그리스");
        list.add("기니");
        list.add("나이지리아");
	.
	.
	.
	.

   
 
        adapter = new ArrayAdapter<String>(this, 
                android.R.layout.simple_dropdown_item_1line, list);
         
        autoText.setAdapter(adapter);



이렇게 해주면 에디트 텍스트에서 글자를 입력하면 아래에 해당 단어 리스트가 자동으로 뜨게 된다.

이건 가장 단순한 방법이고 좀 더 효율적이 방법이 있을 것이다.



반응형

+ Recent posts