1

Я создаю приложение times tables, в котором одно из действий позволяет пользователю вводить таблицы времени, которые они хотели бы просмотреть, тогда приложение будет отображать таблицы времени. например, 6x5 = 30) и т.д.Android: привязка Редактировать текстовое поле к кнопке

Ниже XML макет я создал для деятельности:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:padding="15dp"> 

     <TextView 
      android:id="@+id/tvTop" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="I want to see the: " 
      android:textSize="25dp" /> 

     <EditText 
      android:id="@+id/etEnterNumber" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="Enter Number..." 
      > 
     </EditText> 

     <TextView 
      android:id="@+id/tvBottom" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Times tables!" 
      android:textSize="25dp" /> 

     <Button 
      android:id="@+id/btnGo" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:text="Go" 
      android:layout_gravity="center"/>r 

    </LinearLayout> 

И этот класс Java я создал до сих пор для functionalitiy классов:

public class ViewTimesTables extends Activity implements View.OnClickListener { 

     // Declaring Vars 
     Button go; 
     EditText enterNumber; 
     TextView top; 
     TextView bottom; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      // setting equal to text layout View 
      setContentView(R.layout.view); 

      // calling method to intialise vars 
      initialiseVars(); 

     }// on create end 

     /** 
     * method to initialise all of the buttons, textviews etc used to clean up 
     * the onCreate. 
     */ 
     private void initialiseVars() { 
      // Setting up (initialising) all the buttons text views etc from the xml 
      // (vid 25) 
      go = (Button) findViewById(R.id.btnGo); 
      enterNumber = (EditText) findViewById(R.id.etEnterNumber); 
      top = (TextView) findViewById(R.id.tvTop); 
      bottom = (TextView) findViewById(R.id.tvBottom); 

     } 

     /** 
     * Method with on click listener that adds functionality for all of the 
     * buttons, text views etc 
     * 
     * @param v 
     */ 
     public void onClick(View view) { 

      // switch statement which determines what is clicked 
      switch ((view).getId()) { 
      case R.id.etEnterNumber: 

       // code to read user number (i.e. between 1 and 12) 
       //And possibly link to go button 
       break; 

      case R.id.btnGo: 

       // code to bring up new activity/screen with times table 
       // of the number that was entered in edit text 

       break; 

      } 

     } 

    } 

Я не уверен, как добавить правильную функциональность (возможно, в оператор switch), чтобы, когда, например, «6» вводится в текстовое поле редактирования и нажата кнопка «go», тогда шесть новых таблиц будут отображаться в новом действии?

+1

ради Пита некоторые рецензенты *** дЕЙСТВИТЕЛЬНО *** нужно получить ключ, прежде чем колено подергивания проштамповать любую предложенную редактировать не откровенная вандализм! Это предлагаемое редактирование полностью состояло из изменений, которые были бесполезны (безвозмездно смелый текст), и изменения, которые были просто и явно НЕПРАВИЛЬНЫ, при этом абсолютно ничего не улучшали. Таблицы расписания и времени - это не одно и то же, и вопрос ясно о таблицах времени; и положить вводный в пролете коды является неоспоримо неправильным и бесполезным использованием кода пролетов. Невероятно. –

ответ

2

Я бы начал с просмотра Intents, чтобы начать новую деятельность и передать ей данные.

Соответствующий учебник это Android Intents Tutorial

Получение текста из текста редактирования является простым enterNumber.getText().getString()

Затем можно использовать условный оператор для вызова назначенного класса.

Нечто подобное позволит вам передать два значения класса SixTimesTables со значениями 5 и 6 прошедших в.

if(enterNumber.getText().getString().equals("6")){ 
    Intent i = new Intent(this, SixTimesTables.class); 
    i.putExtra("Value1", 5); 
    i.putExtra("Value2", 6); 
    // set the request code to any code you like, 
    // you can identify the callback via this code 
    startActivityForResult(i, REQUEST_CODE); 
} 
+0

Спасибо, Как бы я заставил кнопку открывать новую активность, хотя в зависимости от того, что введено в текстовое поле редактирования? –

+0

Проверьте мои изменения, дайте мне знать, если это поможет вам больше. – AndyGable

0

Вы действительно не нуждаетесь в OnClick для EditText вы можете обращаться, если данные вводятся в EditText или не от нажатия кнопки только так:

public void onClick(View view) { 

     // switch statement which determines what is clicked 
     switch ((view).getId()) { 
     case R.id.btnGo: 

      // code to bring up new activity/screen with times table 
      // of the number that was entered in edit text 

      // check if editText has values or not 
      if(TextUtils.isEmpty(mEditText.getText().toString())) { 
        mEditText.setError("Please enter a number"); 
      }else { 
        int number = Integer.parseInt(mEditText.getText().toString()); 
        Intent intent = new Intent(YourCurrentActivity.this, NextActivity.class); 
        intent.putExtra("value", number); 
        startActivity(intent); 

        // it is always good to check if the value entered is a number only or not 
        // add inputType tag in the xml 
        // android:inputType="number" for the editText. 
      } 

      break; 

     } 

    } 

Теперь для того, чтобы получить значение в следующем деятельность делают это:

// write this inside the onCreate of the Activity. 
int number; 
if(getIntent().getExtras() != null) { 
     number = getIntent().getIntExtra("value"); 
} 

// use the number then to display the tables