2016-09-24 4 views
0

나는 세 가지 다른 클래스가 있으며 class1에있는 을 클릭하면 class3의 TextView이 "50"으로 변경되기를 원합니다. 반면에 class2의 ImageButton을 클릭하면 class3의 TextView가 "0"으로 변경됩니다.두 가지 다른 활동의 데이터를 다른 활동으로 전달하는 방법

클래스 1 :

ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton); 
    if (button1 != null) { 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent passdata_intent1 = new Intent(class1.this, class3.class); 

       String data1 = "50"; 

       Bundle bundle1 = new Bundle(); 

       bundle1.putString("firstdata", data1); 

       passdata_intent1.putExtras(bundle1); 


       startActivity(passdata_intent1); 

      } 
     }); 
    } 

Class2의 :

ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton); 
    if (button1 != null) { 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent passdata_intent2 = new Intent(class2.this, class3.class); 

       String data2 = "0"; 

       Bundle bundle2 = new Bundle(); 

       bundle2.putString("seconddata", data2); 

       passdata_intent2.putExtras(bundle2); 

       startActivity(passdata_intent2); 



      } 
     }); 
    } 

강좌 3 :

TextView score = (TextView) findViewById(R.id.textViewscore); 


     Bundle bundle1 = getIntent().getExtras(); 

     String data_1 = bundle1.getString("firstdata"); 

     score.setText(data_1); 




     Bundle bundle2 = getIntent().getExtras(); 

     String data_2 = bundle2.getString("seconddata"); 

     score.setText(data_2); 

그래서 내 문제는 내가 응용 프로그램을 시작할 때 나는 Class2의에 ImageButton 클릭이다 클래스 3의 TextView이 변경됩니다. 그러나 class1에서 ImageButton을 클릭하면 class3에서 아무 것도 변경되지 않습니다.

+2

Bcoz는 score.setText();를 두 번 설정했습니다. 따라서 매번 마지막 메소드 호출은 텍스트 뷰 내에서 첫 번째 값 데이터를 표시하지 않습니다. – sushildlh

답변

0

나는 문제는 당신이 "퍼스트 데이터"에 대한 첫 번째 검사 목적에 추가 텍스트보기로 설정 것 같다보고 당신은 "seconddata"추가 확인하고 값을 오버라이드 (override) 텍스트보기에서.

첫 번째 데이터를 작업에 전달할 때 두 번째 데이터 (전달되지 않은 경우)는 null이어야하며 점수 텍스트를 null로 설정하고 첫 번째 데이터 값을 지 웁니다.

2 개의 다른 진입 점에서 동일한 텍스트 뷰로 데이터를 전달하기 위해 추가 정보에 2 개의 다른 이름을 사용할 필요가 없습니다. class1과 class2에 대해 "firstdata"라는 추가 이름을 사용하여 데이터를 전달하면 제대로 작동합니다.

+0

감사합니다. –

0

두 경우 모두 점수 값을 무시합니다. 만약 다른 논리가 잘 작동합니다. 코드의 조각에서

if(getIntent().hasExtras("firsdata")){ 

     Bundle bundle1 = getIntent().getExtras(); 

     String data_1 = bundle1.getString("firstdata"); 

     score.setText(data_1); 

    } else{ 

     Bundle bundle2 = getIntent().getExtras(); 

     String data_2 = bundle2.getString("seconddata"); 

     score.setText(data_2); 
    } 
관련 문제