CheckBox'u kontrol edip seçiminizi kaydedebileceğiniz bir Android uygulaması yapmaya çalışıyorum. Kaydet, ancak bu kaydedilen verilerden rastgele bir sayı almak istediğimde -1 elde ediyorum. Birisi bana yanlış yaptığımı söyleyebilir mi?Kayıtlı dosyamdan rasgele bir numarayı nasıl alabilirim? (Java)
İletiyi görüntülemek için Tost'u kullandığımda bana []
arasında seçtiğim numaraları verir, böylece hala bir dizi doğru mu?
.java
dosya
public class MainActivity extends AppCompatActivity {
Button save, load;
TextView message;
String Message;
int data_block = 100;
static ArrayList<Integer> selection = new ArrayList<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
save = (Button) findViewById(R.id.save_button);
load = (Button) findViewById(R.id.load);
message = (TextView) findViewById(R.id.textView);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Message = selection.toString();
try {
FileOutputStream fou = openFileOutput("doubleArrayNumbers.txt", MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fou);
try {
osw.write(Message);
osw.flush();
osw.close();
Toast.makeText(getBaseContext(), "Data Saved", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
FileInputStream fis = openFileInput("doubleArrayNumbers.txt");
InputStreamReader isr = new InputStreamReader(fis);
char[] data = new char[data_block];
String final_data = "";
int size;
try {
while ((size = isr.read(data)) > 0) {
String read_data = String.copyValueOf(data, 0, size);
final_data += read_data;
data = new char[data_block];
}
if(final_data.length() == 0){
Toast.makeText(MainActivity.this, "You need to pick a selection first", Toast.LENGTH_SHORT).show();
} else{
// Toast.makeText(getBaseContext(), "Message : " + final_data, Toast.LENGTH_SHORT).show();
Random doubleNumberRandom = new Random();
int number = final_data.indexOf(doubleNumberRandom.nextInt(final_data.length()));
TextView myText = (TextView) findViewById(R.id.textView);
String myString = String.valueOf(number);
myText.setText(myString);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
}
public void selectNumber(View view) {
boolean numberChecked = ((CheckBox) view).isChecked();
switch (view.getId()) {
case R.id.number_D1:
if (numberChecked) {
selection.add(new Integer(1));
}else{
selection.remove(new Integer(1));
}
break;
case R.id.number_D2:
if (numberChecked) {
selection.add(new Integer(2));
} else {
selection.remove(new Integer(2));
}
break;
case R.id.number_D3:
if (numberChecked) {
selection.add(new Integer(3));
} else {
selection.remove(new Integer(3));
}
break;
case R.id.number_D4:
if (numberChecked) {
selection.add(new Integer(4));
} else {
selection.remove(new Integer(4));
}
break;
case R.id.number_D5:
if (numberChecked) {
selection.add(new Integer(5));
} else {
selection.remove(new Integer(5));
}
break;
case R.id.number_D6:
if (numberChecked) {
selection.add(new Integer(6));
} else {
selection.remove(new Integer(6));
}
break;
case R.id.number_D7:
if (numberChecked) {
selection.add(new Integer(7));
} else {
selection.remove(new Integer(7));
}
break;
case R.id.number_D8:
if (numberChecked) {
selection.add(new Integer(8));
} else {
selection.remove(new Integer(8));
}
break;
case R.id.number_D9:
if (numberChecked) {
selection.add(new Integer(9));
} else {
selection.remove(new Integer(9));
}
break;
case R.id.number_D10:
if (numberChecked) {
selection.add(new Integer(10));
} else {
selection.remove(new Integer(10));
}
break;
}
}
}
.xml
dosya
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.developer.sven.seceltiedartworkout.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceLarge"
android:text="Dart Workout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="83dp"
android:layout_alignParentBottom="true"
android:layout_alignEnd="@+id/load" />
<Button
android:layout_width="125dp"
android:layout_height="125dp"
android:text="D"
android:textSize="50dp"
android:id="@+id/load"
android:onClick="DoubleButton"
android:background="#0a07c5"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="37dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save"
android:id="@+id/save_button"
android:layout_centerVertical="true"
android:layout_alignEnd="@+id/load" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:id="@+id/number_D1"
android:text="D1"
android:onClick="selectNumber"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:id="@+id/number_D2"
android:text="D2"
android:layout_alignParentStart="true"
android:onClick="selectNumber"
android:layout_below="@+id/number_D1"
android:layout_alignParentLeft="true"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:id="@+id/number_D3"
android:text="D3"
android:layout_alignParentStart="true"
android:onClick="selectNumber"
android:layout_below="@+id/number_D2"
android:layout_alignParentLeft="true"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:id="@+id/number_D4"
android:text="D4"
android:layout_alignParentStart="true"
android:onClick="selectNumber"
android:layout_below="@+id/number_D3"
android:layout_alignParentLeft="true"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:id="@+id/number_D5"
android:text="D5"
android:layout_alignParentStart="true"
android:onClick="selectNumber"
android:layout_below="@+id/number_D4"
android:layout_alignParentLeft="true"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:text="D6"
android:id="@+id/number_D6"
android:layout_below="@+id/number_D5"
android:layout_alignParentStart="true"
android:checked="false"
android:onClick="selectNumber"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:text="D7"
android:id="@+id/number_D7"
android:layout_below="@+id/number_D6"
android:layout_alignParentStart="true"
android:onClick="selectNumber"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:text="D8"
android:id="@+id/number_D8"
android:layout_below="@+id/number_D7"
android:layout_alignParentStart="true"
android:onClick="selectNumber"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:text="D9"
android:id="@+id/number_D9"
android:layout_below="@+id/number_D8"
android:layout_alignEnd="@+id/number_D8"
android:onClick="selectNumber"
android:checked="false" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="21dp"
android:text="D10"
android:id="@+id/number_D10"
android:layout_below="@+id/number_D9"
android:onClick="selectNumber"
android:checked="false" />
</RelativeLayout>
Merhaba Maio Liu, neredeyse istediğim gibi çalışmıyor. (int numarası) kullanıyorum, örneğin D32 - D91-D53 vb. gibi garip sonuçlar elde ederim ve verdiğim seçimden değil. (char number) kullanıyorum, rakamlar sadece "," doğrudur ve "[]" metin görünümünde de gösterilir. Bu – SvenH
düzeltmek için bir yolu var Cevabımı güncelledi. Ne yaptığınızı bulmak için kodunuzu koştum, çünkü hiçbir örnek resim ya da başka bir şey yok, ve xml'i hızlı bir şekilde yorumlamakta o kadar iyi değilim. Her neyse, bunu yapmanın bir yolu budur. "En az kod satırlarının kırılması gibi şeyler değişti" türünde bir çözüm. Bütün bu yöntem, tekerleği yeniden icat ediyor. Bu işi yapmak için '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' [Bu] göz atın (http://stackoverflow.com/questions/16111496/java-how-can-i-write-my-arraylist-to-a-file-and-read-load-that-file-to- Örneklere ihtiyacınız varsa,) ve ping yapın. –
teşekkürler miao. Bu mükemmel çalıştı. – SvenH