0

Intent에 대한 모든 내용은 데이터를 푸시하거나 다른 Activity에서 하나의 Activity를 시작하는 방법에 대해 설명합니다. 이미 실행중인 활동에서 데이터를 가져 오려고합니다.하나의 Tab Activity에서 다른 Tab Activity로 데이터 가져 오기

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html의 탭 레이아웃 튜토리얼은 내가하고 싶은 것을 보여줍니다. (내 응용 프로그램은 엔지니어링 계산을 대신하고 있지만 자습서 코드는 내 응용 프로그램과 유사합니다.)이 자습서에서는 3 개의 탭이있는 응용 프로그램을 만들고 각 탭마다 별도의 활동을 제공합니다.

자습서의 예제를 확장하려면 아티스트 탭/활동에서 아티스트를 선택한다고 가정합니다. 앨범 탭/활동을 선택하고 해당 아티스트의 모든 앨범을 표시 할 수있게하려고합니다.

나는이 일을하기 위해 의도를 사용해야한다고 생각합니다. 필자가 찾은 모든 자습서에서는 아티스트 탭/활동에 "앨범보기"단추를 만들고 단추를 누르면 Albums 활동을 시작하고 artistName을 전달하는 Intent를 실행한다고 가정합니다.

저는 버튼을 만들고 싶지 않습니다. 아티스트 레이아웃의 부동산은 매우 소중하며 앨범 탭이 완벽하게 갖추어져 있으며 HelloTabWidget 액티비티에 이미 앨범 탭을 만들 의도가 있습니다.

게다가 사용자는 아티스트 선택을 변경하기 위해 앨범과 아티스트를 앞뒤로 건너 뛰기를 원할 것입니다. 탭은 이것을 수행하기위한 완벽한 방법입니다. 다른 버튼으로 UI를 복잡하게 만들 필요가 없습니다.

그래서 앨범 탭을 선택하거나 앨범 레이아웃을 표시 할 때 아티스트 활동 START 앨범을 사용하고 아티스트 이름을 푸시하지 않고 아티스트 활동에서 앨범 활동 끌어 오기 아티스트 이름을 가질 수 있습니까? 나는 다른 프로그래밍 세계에서 생각할 수

등가물 :

  • 전역 변수. 안드로이드 devt에서 낙담, 맞습니까? 그리고 그들이 존재한다면, 그들은 무엇이라고 불 립니까?

  • artistName = Artists.getArtistName();과 같은 게터. 그렇게 쉽지는 않다는 느낌이 들었습니다.

  • 파일 (대용량 저장 장치 또는 비 휘발성 메모리)에 쓰기 및 읽기. artistName 값이 영구적 일 필요는 없습니다. 사용자가 응용 프로그램을 시작할 때마다 null로 재설정됩니다.

그렇다면 Android 세상에서 어떻게 이루어 졌습니까? 의도를 사용합니까? 그렇다면 어떻게 사용합니까?

답변

0

전역 변수가 올바른 대답이었습니다.

자바는 사용을 권장하지 않았지만이 창의 오른쪽 여백에있는 "관련"링크에 표시된 몇 개의 링크를 직접 언급했습니다. 하나는 "Android: How to declare global variables?"이고 다른 하나는 "how to pass value betweeen two tab in android"입니다. 둘 다 응용 프로그램 클래스를 전역 변수 및 메서드를 정의하는 장소로 지정했습니다. 이 새로운 지식으로 무장 한 StackOverflow 답변을 확장 한 Xoriant 블로그에 "Android Application Class"이라는 기사가 있습니다.

먼저 세 가지 링크를 검토하는 것이 가장 좋습니다. 그 저자가 말한 것에 대한 몇 가지 팁을 추가해야합니다.

  1. 응용 프로그램 클래스는 별도의 파일이어야합니다. (그게 아니라 모두에게, 어떤 사람들에게 "대만족"수 있습니다.) 여기 Something.java라는 예를 들어 좋은 프레임 워크입니다 :

    public class Something extends Application { 
    
        // Put application wide (global) variables here 
        // Constants are final, so they don't have to be private 
        // But other variables should be declared private; 
        // use getters/setters to access them 
        public final boolean FEET = false; 
        public final boolean METERS = true; 
        private boolean units = FEET; 
    
        @Override 
        public void onCreate() { 
        super.onCreate(); 
        // Put any application wide (global) initialization here 
        } 
    
        // Put application wide (global) methods here 
        public boolean getUnits() { 
        return units; 
        } 
    
        public void setUnits(boolean whichOne) { 
        units = whichOne; 
        } 
    } 
    
  2. 나는 ADT 플러그인과 이클립스를 사용하고

    , Windows XP에서. XML 코드를 직접 편집하는 경우 Eclipse가 제대로 작동하지 않을 수 있으므로 AndroidManifest.xml을 연 다음 Application 탭을 선택하고 Name 필드에 애플리케이션 이름을 입력하는 것이 가장 좋습니다. 이름 앞에 점이나 마침표를 쓸 필요가 없습니다. 클래스 이름 (예 : "전역"또는 "MyApplication"등)을 입력하기 만하면됩니다. ( 이 excerpt from Eclipse's Manifest edit page

  3. 이 단계는 실제 안드로이드 장치에 필요하지 않을 수 있습니다. 당신은 별도의 <application></application> 태그를 만들 필요가 없습니다.이 매니페스트의 기본 응용 프로그램입니다 있습니다,하지만 에뮬레이터 필요했다 : 모든 onCreate() 및 전역 변수 및 메서드에 액세스 할 모든 메서드에서 getApplicationContext() 명령을 사용해야합니다. 다른 활성 변수와 함께 onCreate() 외부에 넣으려고했는데 작동하지 않았습니다. 안쪽에있는 모든 방법은 쓸데없는 것 같지만 에뮬레이터와 안드로이드 장치는 잘 작동합니다. 다음은 사용 방법을 보여주는 샘플입니다 :

    public void fooBar() { 
        // Access to global variables and methods 
        final Something s = (Something)getApplicationContext(); 
    
        // ... 
        // This next line demonstrates both a global method and a global variable 
        if (s.getUnits() == s.FEET) { 
        // do something with feet 
        } else { 
        // do something with meters instead 
        } 
        // ... 
    } 
    

내가 만난 유일한 딸꾹질이었다. 내가 열거 한 세 가지 참조 문헌은 다른 방식으로는 꽤 완벽하다.