2014-12-25 3 views
1

Я слишком долго застрял в этой проблеме. я думаю, что это просто, но я разработчик Android-разработчиков, поэтому ваша помощь будет очень признательна.как установить текст из другого класса активности

У меня есть два вида деятельности. В моем основном мастере деятельности есть текстовое изображение и кнопка. То, что я пытаюсь сделать, - это реализовать кнопку, чтобы изменить текст текстового представления из другого класса активности (класс Btn).

это мой класс Btn

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

Возможный дубликат [Как передать объект из одной активности в другую в Android] (http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity-to-another- in-android) –

+0

Ваш вопрос мне не ясен, вы хотите изменить текст textview в классе MainActivity после получения некоторых данных из второго класса Activity на Btn Click Event ??? –

ответ

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

В вашей основной деятельности определите edittext или textview, например txtUname и txtEmail, и определите одну кнопку, щелкнув по этой кнопке, поместите вышеуказанный код из MainActivity.java и теперь создайте второй макет, в котором вы можете получить данные, используя намерение, которое показано в Second.java и установите текст, который требуется с вашего конца. Надеюсь, это сработает для вас. –

1

Даже если вы действительно полный новичок, вторая вещь, которую нужно изучить после Activity is Intent. Нет необходимости в одном действии для извлечения данных и свойств объектов из другого и отправки изменений прямо к ним, это небезопасно для среды выполнения, потому что вы не можете быть на 100% уверены, что фоновое действие не будет уничтожено системой. Итак, намерения изобретены для вызова Деяний и передачи данных им. Код, предоставляемый Android Coders, работает таким образом. Во-первых, вы создаете объект Intent, добавляете дополнительные данные (например, текст, который хотите установить в TextView другого Activity), и, наконец, запускаете Activity, ответственный за такой тип намерения. В этом коде Intent является явным, что означает, что необходимо вызвать определенную активность определенного пакета. В этой операции есть код, который проверяет, был ли вызванный Intent, читает лишние данные (ваш текст) и, наконец, вызывает setText(). Существуют также неявные намерения, основанные на типе данных и действиях. Это зависит от системы, чтобы дать вам выбор между всеми действиями из всех пакетов, присутствующих на устройстве, которые могут обрабатывать тип данных, которые вы предоставляете намерению. Ничего личного, но если вы не сможете понять намерения, вы не поймете Android. Попробуйте это очень сложно.

Смежные вопросы