我在这个网站上花了最近两周的时间试图拼凑代码,让这个应用程序做我想做的事情。我知道我很亲密。我知道我该死的。但它不会填充第二个活动中的任何内容。
据我所知,此活动正常。我唯一不知道的是文件实际上是否正确写入,但是当我向应该传递给文件的输出Toast时,它会返回正确的数据。
MainActivity.java
public class MainActivity extends AppCompatActivity {
double MOA;
TextView turretClicks;
boolean noMOA;
double clicks;
String stringRange;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
turretClicks = (TextView) findViewById(R.id.turretClicks);
// Create an anonymous implementation of OnClickListener
View.OnClickListener btnClickCalc = new View.OnClickListener() {
@Override
public void onClick(View v) {
clicks = (MOA * 4);
String stringClicks = String.valueOf(clicks);
// Toast.makeText(MainActivity.this, clicks + " Clicks", Toast.LENGTH_SHORT).show();
EditText range = (EditText) findViewById(R.id.rangeEntry);
stringRange = range.getText().toString();
turretClicks.setText(stringClicks);
int finalRange = Integer.parseInt(stringRange);
if (finalRange <= 200) {
MOA = 0;
}
if (finalRange > 200 && finalRange <= 225) {
MOA = .5;
}
if (finalRange > 225 && finalRange <= 250) {
MOA = 1;
}
if (finalRange > 250 && finalRange <= 275) {
MOA = 1.65;
}
if (finalRange > 275 && finalRange <= 300) {
MOA = 2.25;
}
if (finalRange > 300 && finalRange <= 325) {
MOA = 2.8;
}
if (finalRange > 325 && finalRange <= 350) {
MOA = 3.5;
}
if (finalRange > 350 && finalRange <= 375) {
MOA = 4.0;
}
if (finalRange > 375 && finalRange <= 400) {
MOA = 4.75;
}
if (finalRange > 400 && finalRange <= 425) {
MOA = 5.50;
}
if (finalRange > 425 && finalRange <= 450) {
MOA = 6.25;
}
if (finalRange > 450 && finalRange <= 475) {
MOA = 7.0;
}
if (finalRange > 475 && finalRange <= 500) {
MOA = 7.5;
}
if (finalRange > 500 && finalRange <= 525) {
MOA = 8.25;
}
if (finalRange > 525 && finalRange <= 550) {
MOA = 9.0;
}
if (finalRange > 550 && finalRange <= 575) {
MOA = 9.75;
}
if (finalRange > 575 && finalRange <= 600) {
MOA = 10.5;
}
if (finalRange > 600 && finalRange <= 625) {
MOA = 11.5;
}
if (finalRange > 625 && finalRange <= 650) {
MOA = 12.25;
}
if (finalRange > 650 && finalRange <= 675) {
MOA = 13;
}
if (finalRange > 675 && finalRange <= 700) {
MOA = 14;
}
if (finalRange > 700) {
noMOA = true;
}
}
};
// Capture our button from layout
Button button = (Button) findViewById(R.id.btnClickCalc);
// Register the onClick listener with the implementation above
button.setOnClickListener(btnClickCalc);
final View.OnClickListener btnRecordRange = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, clicks + " Clicks " + "@ " + stringRange + " yards", Toast.LENGTH_LONG).show();
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("recordings.csv", Context.MODE_PRIVATE));
outputStreamWriter.write("Clicks" + " " + clicks + "," +
" " + "@Range" + stringRange + "\n");
outputStreamWriter.close();
// Toast.makeText(MainActivity.this, recordableClicks
+ " " + recordableRange, Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}
};
// Capture our button from layout
Button recordRange = (Button) findViewById(R.id.btnRecordRange);
// Register the onClick listener with the implementation above
recordRange.setOnClickListener(btnRecordRange);
// Create an anonymous implementation of OnClickListener
final View.OnClickListener btnToRecorded = new
View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new
Intent(MainActivity.this,RangeRecords.class));
}
};
// Capture our button from layout
Button showRecords = (Button) findViewById(R.id.btnToRecorded);
// Register the onClick listener with the implementation above
showRecords.setOnClickListener(btnToRecorded);
// Create an anonymous implementation of OnClickListener
}
}
RangeRecords.java
public class RangeRecords extends Activity {
public static TextView ListItems;
private RelativeLayout lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_recorded_ranges);
readFromFile("recordings.csv");
lv = (RelativeLayout) findViewById(R.id.relativeLay);
}
public String readFromFile(String fname) {
String ret = "";
ArrayList<String> ar = new ArrayList<>();
try {
InputStream fis = new FileInputStream(fname);
BufferedReader br = new BufferedReader(new
InputStreamReader(fis));
for (String line = br.readLine(); line != null; line =
br.readLine()) {
ar.add(line);
for (int i = 0; i < ar.size(); i++){
TextView textView = new TextView(this);
textView.setText(ar.get(i));
lv.addView(textView);
}
}
br.close();
} catch (Exception e) {
System.err.println("Error: Target File Cannot Be Read");
}
return ret;
}
}
假设所有导入都是正确的。
content_main.xml 这里的一切都正常。显示所有数据,按钮正常工作。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main" tools:context=".MainActivity"
android:background="#000000">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate MOA"
android:id="@+id/textView"
android:textColor="#ff0000"
android:textSize="28dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate Clicks"
android:id="@+id/btnClickCalc"
android:textColor="#ff0000"
android:onClick="calcClick"
android:layout_below="@+id/rangeEntry"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/turretClicks"
android:textSize="28dp"
android:textColor="#ff0000"
android:hint="0"
android:background="#c2c0c0"
android:layout_marginTop="106dp"
android:layout_below="@+id/btnClickCalc"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/rangeEntry"
android:layout_marginTop="88dp"
android:textSize="20dp"
android:hint="Enter Range"
android:background="#c2c0c0"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clicks"
android:id="@+id/textView2"
android:layout_below="@+id/turretClicks"
android:layout_centerHorizontal="true"
android:background="#c2c0c0"
android:textColor="#fc0000"
android:textSize="20dp" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="To Recorded Ranges"
android:id="@+id/btnToRecorded"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Record Clicks for Range"
android:id="@+id/btnRecordRange"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
</RelativeLayout>
activity_recorded_range.xml
当我切换到此活动/视图时,屏幕为黑色,但状态栏(信号,时间等)除外,它有点模糊白色。这里根本没有任何东西填充。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
android:id="@+id/relativeLay"
android:background="#000000" >
我在这里缺少什么?
MainActivity计算范围炮塔@ X范围的点击次数。下一个按钮将此数据记录到csv文件中。下一个按钮会切换到下一个活动,该活动应该onCreate显示csv文件中的数据。
答案 0 :(得分:0)
我解决了这个问题。在我看来,在进入Java时很难理解UI。我无法回想起我是如何解决这个问题的,但是对于那些可能遇到类似问题的人来说,深入了解你的用户界面是如何工作的,并查看这个视频,以便更好地了解布局在Android中的UI工作方式:
https://www.youtube.com/watch?v=E6c3DGnvefY
观看了这个视频后,IIRC,我发现我的一个布局与另一个布局重叠,并且文本视图从未被创建过。我最终打破了整个代码。我停止使用文件阅读器和编写器,并开始使用共享首选项,它在我试图完成的简单任务方面表现得非常好。再次,考虑您的UI,观看视频以更好地了解如何开始使用UI,并查看您的UI有多复杂。很可能,你试图做得太快,这是我的情况。 :)