簡體   English   中英

Android Studio:制作一個隨機數生成器應用程序,不顯示隨機數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM