2014-04-30 2 views
0

저는 Eclipse 7 for Windows를 사용하고 있습니다. 유익한 응용 프로그램 (텍스트와 오프라인 콘텐츠 만)을 만들고 있습니다. 내 앱에는 약 180 개의 버튼이 있습니다. 각 버튼은 다른 화면으로 연결됩니다. 각 버튼을 특정 화면으로 연결하는 방법을 알아야합니까? 또한 코드를 복제하고 코드를 180 번 복사하여 붙여 넣는 데 시간을 낭비하지 않는 방법이 있습니까? 처음 두 화면 아래 내 코드를 확인 :Eclipse에서 여러 화면보기를 만들려면 어떻게해야합니까?

MainActivity.java위한거야

:

공공 무효 addListenerOnButton() {

final Context context = this; 

    button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, MainActivity2.class); 
         startActivity(intent); 

     } 

    }); 

} 

내가 그 코드는 하나 개의 버튼에 대한 의미. 모든 단추 하나씩이 작업을 반복해야합니까?

질문 및 몇 개 수업을해야합니까? 180 주요 활동, 180 fragment_main.xml 및 180 activity_main.xml?

응용 프로그램이 단지 "정보 응용 프로그램이"당신이이 개 활동을 생성 할 수 있기 때문에, 내 생각의
+0

디자인 활동을 180 개 다시 생각해 볼 것을 제안합니까 ?? – Raghunandan

+0

@Raghunandan "180 가지 활동을 재검토"한다는 것은 무엇을 의미합니까? 그래서 기본적으로 내 모든 애플 리케이션을 변경해야합니다! 아니 실 거예요! –

+0

제발 좀 더 설명해주세요 @Raghunandan –

답변

0

: 버튼을

  1. 주요 활동을
  2. "정보 페이지"그것을 할

이 정보를 얻는 방법에 대한 정보가 필요합니다.

  1. SQLite 데이터베이스에 있습니다. 문자열 배열

에서

  • 개인적으로, 나는 당신이 미래에 문제없이 그것을 개선 할 수있는 SQLite는 DB를 선호합니다.

    예 : 다음 Information activity 소개

    레이아웃에이 활동이 통과해야 할 텍스트를 추가 할 것입니다 TextView이 있습니다.

    Intent intent = getIntents(); 
    String stringToDisplay = null; 
    
    if (intent != null) 
    { 
        stringToDisplay = intent.getStringExtra (EXTRA_STRING_CONTENT); 
    } 
    

    getIntents에 의해 그것에 생성되고 전달되는 Intent 개체를 얻을 것이다 :

    우리가 이런 식으로 뭔가를 추가 우리는 우리의 onCreate에, Intents를 사용하여 표시 할 문자열을 전달 귀하의 경우는 동적으로 만들려면 우리의 주요 활동. getStringExtra는 안드로이드라는 간단한 방법입니다 : 내가 함께 저장되는 문자열을 얻으려면 키 EXTRA_STRING_CONTENT

    EXTRA_STRING_CONTENT 확실히 우리가 어떤을하지 않는 우리가 만드는 데 사용되는 필드 (그것은 Map 같은 뭔가) 우리는 우리가 (MainActivity에서)를 통과 할 때 같은 이름을 사용할 필요가 있기 때문에, 데이터를 전달에서의 오류와 우리가 (InformationActivity)

    public static final String EXTRA_STRING_CONTENT = "EXTRA_STRING_CONTENT"; 
    

    확인을 읽을 때, 우리는 수행됩니다.

    우리는 지금 우리의 텍스트 뷰에 문자열을 설정해야합니다

    TextView infoTextView = (TextView) findViewById(R.id.infotextview); 
    infoTextView.setText (stringToDisplay); 
    

    은 그만.

    이제 우리는 나는이 두 줄에 초점을 맞출 것이다, 우리의 MainActivity 코드에 가서 우리의 addListenerOnButton

    final Context context = this; 
    
    button = (Button) findViewById(R.id.button1); 
    
    button.setOnClickListener(new OnClickListener() { 
    
        @Override 
        public void onClick(View arg0) { 
    
         Intent intent = new Intent(context, MainActivity2.class); 
            startActivity(intent); 
    
        } 
    
    }); 
    

    음을 수정해야

    우리는 여기에 표시 할 문자열을 전달해야
    Intent intent = new Intent(context, MainActivity2.class); 
    startActivity(intent); 
    

    방법 ?

    우리가 getStringExtra을 사용하기 전에 지금은 유사한 (참고 :이 같은 의도 클래스의)입니다하지만 지금은 우리가 putExtra 방법을 필요로 우리는 그래서 우리는 단지

    String stringToDisplay = "Hello world"; 
    intent.putExtra(InformativeActivity.EXTRA_STRING_CONTENT, stringToDisplay); 
    

    을 할 필요를 위해, 컴파일러가 올바른 과부하를 선택합니다 (참고 : InformativeActivity.EXTRA_STRING_CONTENT)

    현재 코드에서 우리는 항상 Hello world을 두 번째 활동으로 보냈지 만 버튼을 기반으로 한 동적 인 것이 필요합니다 ... 이제는 데이터를 얻는 방법에 따라 다릅니다.

    문자열 배열 인 경우 문자열 배열을 배열에 저장 한 다음 단추를 기반으로 할 수 있습니다 (첫 번째 보낸 문자열 인덱스 0 인 경우 등).

    예 :

    int buttonId = 1; // it will be a general variable, if it's button 1 it will be 0, if 2-1 etc. 
    String[] informations = getResources().getStringArray(R.array.infos); // in a real code you should move it outside the `onClick` code and put it in a static final field. 
    intent.putExtra(InformativeActivity.EXTRA_STRING_CONTENT, informations[buttonId]); // it's the same of above 
    

    당신이 당신의 필요에 따라 코드를 적용하는 방법을 알 수 개념을 이해하면

    .

    더 많은 정보가 필요하거나 보내려는 것이 두 번째 활동 (예 : sqlite 데이터베이스에서 행의 ID와 행을 읽을 수있는 예 : 이 ID에 기초하여 제 2 활동)을 변경할 수

    어떤 것들은 :

    1. 피가 MainActivity2를 호출, 그것은, 당신은 컨텍스트를 저장 정말 필요가 없습니다
    2. 이름으로 그렇게 도움이되지이다 당신은 단지 MainActivity를 사용할 수 있습니다.이
    3. addListenerOnButton 좀 더 일반적인 것으로 만드십시오. 예를 들어 Button을 인수로 사용하고 Listener를 설정하십시오. XML에서 읽지 마십시오. 모든 버튼에 180 개의 메소드가 있습니다.
  • +0

    감사합니다로드 남자 !!! 정말 감사 –

    관련 문제