2016-09-25 4 views
0

У меня есть EditViews, чтобы запрашивать у пользователя min и max. Введенные данные передаются в функцию Activity и генерируется случайное число. Это случайное число передается на другое действие для отображения. Когда я ввожу минимальное число и максимальное количество, а затем нажмите кнопку, которая говорит «сгенерировать», я получаю направленную на пустой экран. Тем не менее, я ожидаю, что randValue будет отображаться.Android Studio: Создание случайного генератора чисел, случайное число не отображается?

MainActivity.java

public class MainActivity extends AppCompatActivity { 
public final static String RAND_NUM = "com.example.random.MESSAGE"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void generateNum(View view) { 
    Intent intent = new Intent(this, DisplayNumActivity.class); 

    EditText minInput = (EditText) findViewById(R.id.min_num); 
    EditText maxInput = (EditText) findViewById(R.id.max_num); 

    int minNum = Integer.parseInt(minInput.getText().toString()); 
    int maxNum = Integer.parseInt(maxInput.getText().toString()); 
    Random rand = new Random(); 
    int randNum = rand.nextInt(maxNum - minNum) + minNum; 
    intent.putExtra(RAND_NUM, randNum); 
    startActivity(intent); 

    } 
} 

DisplayNumActivity.java

public class DisplayNumActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_num); 

    Intent intent = getIntent(); 
    String randValue = intent.getStringExtra(MainActivity.RAND_NUM); 

    TextView textView = new TextView(this); 
    textView.setTextSize(30); 
    textView.setText(randValue); 

    ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_num); 
    layout.addView(textView); 

    } 
} 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    tools:context="com.example.random.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Min number" 
    android:id="@+id/textView" 
    android:layout_marginTop="40dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_alignStart="@+id/textView2" /> 

<EditText 
    android:id="@+id/min_num" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="min" 
    android:inputType="number" 
    android:layout_marginTop="32dp" 
    android:layout_below="@+id/textView" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Max number" 
    android:id="@+id/textView2" 
    android:layout_marginTop="43dp" 
    android:layout_below="@+id/min_num" 
    android:layout_centerHorizontal="true" /> 

<EditText 
    android:id="@+id/max_num" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="max" 
    android:inputType="number" 
    android:minWidth="500dp" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_text" 
    android:onClick="generateNum" 
    android:id="@+id/button" 
    android:layout_below="@+id/max_num" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="43dp" /> 

ответ

1

OK, две вещи:

1) В DisplayNumActivity, изменить

String randValue = intent.getStringExtra(MainActivity.RAND_NUM);

к этому:

int randValue = intent.getIntExtra(MainActivity.RAND_NUM, 0);

Здесь мы читаем в целочисленное значение от намерения вместо строки. В вашей основной деятельности вы сохранили int здесь, а не String, String здесь - всего лишь «ключ» в паре ключ-значение. Нуль - это только значение по умолчанию, если он не может найти ваш int.

2) Для того, чтобы отобразить номер, который вы должны сначала изменения, которые ИНТ обратно в строку, чтобы установить его в TextView, а затем мы выводим его в относительной макете, как это:

String stringRandValue = Integer.toString(randValue); 
View relativeLayout = findViewById(R.id.activity_display_num);; 
TextView textView = new TextView(this); 
textView.setTextSize(30); 
textView.setText(stringRandValue); 
((RelativeLayout)relativeLayout).addView(textView); 

Это должно Работа.

+1

Спасибо, все. : D – user298519

0

Думаю, вам нужно точно указать, к какому макету вы хотите добавить свое текстовое представление.

Нравится: RelativeLayout relativelayout = (RelativeLayout) findViewById (R.id.relativelayoutID);

Кастинг для просмотра группы кажется немного тяжелым для меня. Попробуйте предложенный способ и сообщите мне, если он что-то изменит для вас.

Редактировать: Есть еще одна вещь, которая, как я считаю, может быть преступником в этом случае, и в этом случае отсутствуют параметры макета для вашего текста.

Пример: // создает Params как этого

LayoutParams layoutparams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

// установить макет Params как этого

textView.setLayoutParams(layoutparams); 

Примечание - заменить родительский тип макета в соответствии к вашему xml, где этот текст был добавлен.

+0

Все еще не работает. – user298519

+0

Можете ли вы поделиться xml для R.layout.activity_display_num? –

+0

Посмотрите на отредактированный ответ и сообщите мне, если это сработало. Тем не менее, если это не сработает, будет лучше, если вы можете поделиться xml-кодом для этого действия. –

0

Заменить этот

Строка randValue = intent.getStringExtra (MainActivity.RAND_NUM);

С этим

Строка randValue = intent.getIntExtra (MainActivity.RAND_NUM, default_int_value);

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