2016-09-25 16 views
0

私はユーザーに最小値と最大値を入力するようにEditViewsを持っています。入力されたデータはアクティビティ関数に渡され、乱数が生成されます。その乱数は、表示される別のアクティビティに渡されます。最小値と最大値を入力してからgenerateというボタンをクリックすると、空白の画面が表示されます。しかし、私はrandValueが表示されることを期待しています。Androidスタジオ:乱数生成アプリケーションを作成すると、乱数が表示されませんか?

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、二つのこと

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

ここでは、int型の値に読んでいますインテントの代わりにStringから取得します。主なアクティビティでは、Stringではなくintを保存しました。ここでのStringは、キーと値のペアの「キー」です。ゼロはあなたのintを見つけることができない場合のデフォルトです。

べき
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); 

:のTextViewでそれを設定し、我々はこのようなあなたの相対的なレイアウトにそれを表示するために戻って文字列にint型最初の変更にあなたが持っている数を表示するには

2)作業。

+1

ありがとうございました。 :D – user298519

0

テキストビューを追加するレイアウトを正確に指定する必要があると思います。

Like:RelativeLayout relativelayout =(RelativeLayout)findViewById(R.id.relativelayoutID);

ビューグループにキャスティングするのは少し重いようです。お勧めの方法を試してみてください。何か変わったら教えてください。

編集:このケースでは私が犯人かもしれないと感じるもう1つのことがあり、テキストビューのレイアウトパラメータがありません。

例: //この

textView.setLayoutParams(layoutparams); 

ノートのようなレイアウトのparams設定この

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

//同様のparams作成 - 応じて親のレイアウトの種類を交換しますこのtextViewが追加されたxmlに追加します。

+0

まだ動作しません。 – user298519

+0

R.layout.activity_display_numにxmlを共有できますか? –

+0

編集した回答を見て、それがうまくいけば教えてください。それでも動作しない場合は、このアクティビティのXMLコードを共有できる方が良いでしょう。 –

0

この

ストリングrandValue = intent.getStringExtra(MainActivity.RAND_NUM)を交換。この

ストリングrandValue = intent.getIntExtra(MainActivityで

。RAND_NUM、 default_int_value); DisplayNumActivityで

1)、これに

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

を変更: