2014-12-25 4 views
1

나는이 문제에 너무 오래 머물러 있습니다. 나는 간단하다고 생각하지만, 안드로이드 개발자이기 때문에 도움을 주시면 대단히 감사하겠습니다.다른 활동 클래스에서 텍스트를 설정하는 방법

두 가지 활동이 있습니다. 내 주요 활동 레이아웃에는 텍스트보기와 버튼이 있습니다. 내가 뭘 하려는지 다른 활동 클래스 (Btn 클래스)에서 textview 텍스트를 변경하려면 단추를 구현하는 것입니다.

이 내 щࣉ = 클래스입니다

public class Btn extends Activity implements OnClickListener { 
    Button btn; 
    TextView textBox; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.btn); 
     textBox = (TextView)findViewById(R.id.address); 
     btn.setOnClickListener(this);   
    } 

    @Override 
    public void onClick(View v) { 
     textBox.setText("Test Test"); 
    } 

} 

지금이 컴파일되고 잘 작동하지만 난 누를 때 버튼을 아무 일도 일어나지 않습니다. 버튼을 눌렀을 때 텍스트 뷰의 텍스트를 변경하는 방법을 알고 싶습니다. 내 주요 활동 수업에서이 일을하는 방법을 알고 있지만 다른 수업에서하고 싶습니다.

+0

가능한 중복 [안드로이드에서 하나의 활동에서 다른 활동으로 객체를 전달하는 방법] (http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity-to-another- in-android) –

+0

당신의 질문은 나에게 명확하지 않다. Btn Click 이벤트에서 Second Activity 클래스의 데이터를 얻은 후에 MainActivity 클래스의 textview 텍스트를 변경하고 싶습니까 ??? –

답변

1

아래의 코드를 실행 해보세요,

MainActivity.java는

public class MainActivity extends Activity implements OnClickListener { 

    Button btn; 
    TextView textBox; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.btn); 
     textBox = (TextView)findViewById(R.id.address); 
     btn.setOnClickListener(this);   
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.btn: 
      String strTemp = "Test Test"; 
      textBox.setText(strTemp); 

      Intent intent = new Intent(MainActivity.this, Second.class); 
      intent.putExtra("tempstring", strTemp); 
      startActivity(intent); 
      break; 

     default: 
      break; 
     } 

    } 
} 

Second.java

public class Second extends Activity { 

    private TextView txtTemp; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 

     txtTemp = (TextView) findViewById(R.id.txt_temp); 

     Intent intent = getIntent(); 
     String strTemp = intent.getStringExtra("tempstring"); 

     txtTemp.setText(strTemp); 
    } 
} 

는 당신을 위해 작동 바랍니다.

+1

아마도이 코드가 "여기에 몇 가지 코드가 있습니다"보다는 유용 할 것입니다. –

+0

주 활동에서 txtUname 및 txtEmail과 같은 edittext 또는 textview를 정의하고 하나의 버튼을 정의하면이 버튼을 클릭하면 MainActivity.java에서 위의 코드를 입력하고 이제는 두 번째 레이아웃을 작성하여 인 텐트를 표시 할 수 있습니다. Second.java 및 끝에서 필요한 텍스트를 설정하십시오. 나는 이것이 당신을 위해 일하기를 바랍니다. –

1

실제로 완전히 새로운 초보자인데도 활동 후에 의도적으로 배울 점은 두 번째입니다. 다른 액티비티에서 객체의 데이터와 속성을 검색하고 변경 사항을 직접 보낼 필요가없는 하나의 액티비티가 필요합니다. 백그라운드 액티비티가 시스템에 의해 종료되지 않을 수 있기 때문에 런타임에는 안전하지 않습니다. 인 텐트는 활동 호출 및 데이터 전달을 위해 고안되었습니다. Android Coders에서 제공하는 코드는 이러한 방식으로 작동합니다. 먼저, 인 텐트 오브젝트를 생성하고 추가 데이터 (다른 Activity의 TextView로 설정하려는 텍스트와 같은)를 넣은 후 마지막으로이 종류의 인 텐트를 담당하는 Activity를 시작합니다. 이 코드에서 의도는 명시 적입니다. 즉, 특정 패키지의 특정 활동을 호출해야합니다. 이 액티비티에는 Intent가 호출되었는지 검사하고, 추가 데이터 (텍스트)를 읽고, 마지막으로 setText()를 호출하는 코드가 있습니다. 데이터 및 작업의 유형에 따라 암시 적 인 텐트가 있습니다. 디바이스에있는 모든 패키지의 모든 활동 사이에서 선택을 제공하는 것은 시스템에 달려 있습니다. 이는 사용자가 의도에 제공하는 데이터 유형을 처리 할 수 ​​있습니다. 개인적인 것은 없지만 인 텐트를 이해할 수 없다면 Android를 이해하지 못할 것입니다. 이것을 아주 열심히 시도하십시오.

관련 문제