[英]Android Studio: Making a random number generator app, random number doesn't display?
我有EditViews來提示用戶最小和最大。 輸入的數據被傳遞到活動函數中,並生成一個隨機數。 該隨機數將傳遞到另一個要顯示的活動。 當我輸入一個最小數字和一個最大數字,然后單擊顯示生成的按鈕時,我被定向到空白屏幕。 但是,我希望顯示randValue。
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)在DisplayNumActivity中,更改
String randValue = intent.getStringExtra(MainActivity.RAND_NUM);
對此:
int randValue = intent.getIntExtra(MainActivity.RAND_NUM, 0);
在這里,我們從意圖而不是字符串中讀取一個int值。 在您的主要活動中,您在此處保存了一個整數,而不是字符串,這里的字符串只是鍵值對中的“鍵”。 零只是一個默認值,以防找不到您的整數。
2)要顯示數字,您必須首先將int改回String以便在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);
那應該工作。
我認為您必須確切指定要將textview添加到的布局。
像這樣: RelativeLayout relativelayout =(RelativeLayout)findViewById(R.id.relativelayoutID);
對我來說,投射到視圖組似乎有些沉重。 請嘗試建議的方式,讓我知道它是否為您帶來任何改變。
編輯 :在這種情況下,我覺得還有另外一件事可能是罪魁禍首,並且您的文本視圖缺少布局參數。
示例: //創建這樣的參數
LayoutParams layoutparams = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT );
//像這樣設置布局參數
textView.setLayoutParams(layoutparams);
注意-根據添加了textView的xml替換父布局類型。
取代這個
字符串randValue = intent.getStringExtra(MainActivity.RAND_NUM);
有了這個
字符串randValue = intent.getIntExtra(MainActivity.RAND_NUM,default_int_value);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.