안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요^^
제가 Linkify를 이용하여
특정 문자열 ( ex) #abc #bbq ) 인식하여
EditText안에 링크처럼 보이게까지는 완성하였는데요..
여기서 만약 #abc 를 클릭하면
"#abc"의 정보를 가지고
다른 액티비티로 넘어가 TextView에 '#abc' 를 출력하고 싶은데
잘되지않아 질문드립니다.
좋은 답변 기다리겠습니다.
<참고소스>
Oncreate( -- )
{
String str = "Hello Android #abc and #bbq";
et = (EditText) findViewById(R.id.EditText01);
et.setText(str);
Pattern mPattern = Pattern.compile("#\\S+");
Linkify.addLinks(et, mPattern, ""); <- 이부분에서 잘안되고있습니다 ㅜㅜ
}
2010.12.01 14:58:08
Linkify 별로 안 좋아요....예를들어 아래와 같이 링크를 걸면...
예
=============================
| 1. 안녕하세요 voodooft 입니다 |
| 2. #abc 님 안녕하세요~ |
| 3. 반갑습니다~~ |
=============================
만약 저위에 =와 |로 둘러싸인 직사각형이 리스트뷰의 하나의 Row 라고 치면
Row에 클릭리스너를 붙여놨을 수도 있겠죠? 이때 세줄을 쓴 Row #abc에 링크가 걸렸다 치면..
라인 1과 3에서만 Row의 리스너가 작동합니다...Linkify링크가 걸려있는 2번 라인은 2번라인 글씨의 높이*가로전체
만큼 Row 리스너가 먹지 않습니다... #abc가 라인의 끝부분에 있으면 그 끝부분 공백 부분을 눌러도 Linkify가
클릭되기도 하고 무튼 별로 좋지 않습니다....그리고 밑줄도 지금 제가 알기론 없앨 수 있는 방법을 모르겠구요....
개발자 마음대로 바꿀수 있는것은....링크 색상뿐이네요........
어렵게 적용했는데 다시 다른 문제 해결해야 되면 짜증나실까봐 미리 알려드립니다...ㅡ0ㅡ;
예
=============================
| 1. 안녕하세요 voodooft 입니다 |
| 2. #abc 님 안녕하세요~ |
| 3. 반갑습니다~~ |
=============================
만약 저위에 =와 |로 둘러싸인 직사각형이 리스트뷰의 하나의 Row 라고 치면
Row에 클릭리스너를 붙여놨을 수도 있겠죠? 이때 세줄을 쓴 Row #abc에 링크가 걸렸다 치면..
라인 1과 3에서만 Row의 리스너가 작동합니다...Linkify링크가 걸려있는 2번 라인은 2번라인 글씨의 높이*가로전체
만큼 Row 리스너가 먹지 않습니다... #abc가 라인의 끝부분에 있으면 그 끝부분 공백 부분을 눌러도 Linkify가
클릭되기도 하고 무튼 별로 좋지 않습니다....그리고 밑줄도 지금 제가 알기론 없앨 수 있는 방법을 모르겠구요....
개발자 마음대로 바꿀수 있는것은....링크 색상뿐이네요........
어렵게 적용했는데 다시 다른 문제 해결해야 되면 짜증나실까봐 미리 알려드립니다...ㅡ0ㅡ;
2010.12.01 15:10:57
저는 사용자가 입력한 태그 뒤의 공백까지으 ㅣ문자열들의 리스트를 저장해두고
태그는 모두 없애버리고 Pattern.compile(""); 이 부분의 파라미터에는
미리 파싱해둔 링크 단어들의 리스트를 |로 묶어서 넣어주었습니다...
링크 거는데까지 성공했고 원하는 곳으로 엑티비티 전환도 되네요....
근데 보기싫은 밑줄을 없앨 방법을 모르겠고 위에 쓴 예제같이 3줄이 있다고 칠때
우연히 한줄에 하나씩 링크가 걸려서 세줄 모두 링크가 걸렸을땐 해당 로우를 눌러
상세보기로 가고싶으면 손가락에 기를 집중해서 라인1과 top 여백이나 라인3과 bottom 여백
틈새를 정확히 눌러줘야만...들어갈 수 있는 불상사가 생겨서..... 버리고 다른 방법으로 구현하려고 합니다...
태그는 모두 없애버리고 Pattern.compile(""); 이 부분의 파라미터에는
미리 파싱해둔 링크 단어들의 리스트를 |로 묶어서 넣어주었습니다...
링크 거는데까지 성공했고 원하는 곳으로 엑티비티 전환도 되네요....
근데 보기싫은 밑줄을 없앨 방법을 모르겠고 위에 쓴 예제같이 3줄이 있다고 칠때
우연히 한줄에 하나씩 링크가 걸려서 세줄 모두 링크가 걸렸을땐 해당 로우를 눌러
상세보기로 가고싶으면 손가락에 기를 집중해서 라인1과 top 여백이나 라인3과 bottom 여백
틈새를 정확히 눌러줘야만...들어갈 수 있는 불상사가 생겨서..... 버리고 다른 방법으로 구현하려고 합니다...




Linkify.addLinks(et, mPattern, "aaa");
받을 엑티비티 메니페스트에서 인텐터 필터를 추가하고 위에서 동일한 스키마 값을 설정 합니다.
<activity ....................>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="aaa" />
</intent-filter>
</activity>
해당 액티비티에서
String text = getIntent().getData().toString();
로 받으면 됩니다.