第二项活动不会填充

时间:2015-11-10 21:28:22

标签: java android xml android-layout csv

我在这个网站上花了最近两周的时间试图拼凑代码,让这个应用程序做我想做的事情。我知道我很亲密。我知道我该死的。但它不会填充第二个活动中的任何内容。

据我所知,此活动正常。我唯一不知道的是文件实际上是否正确写入,但是当我向应该传递给文件的输出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文件中的数据。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。在我看来,在进入Java时很难理解UI。我无法回想起我是如何解决这个问题的,但是对于那些可能遇到类似问题的人来说,深入了解你的用户界面是如何工作的,并查看这个视频,以便更好地了解布局在Android中的UI工作方式:

https://www.youtube.com/watch?v=E6c3DGnvefY

观看了这个视频后,IIRC,我发现我的一个布局与另一个布局重叠,并且文本视图从未被创建过。我最终打破了整个代码。我停止使用文件阅读器和编写器,并开始使用共享首选项,它在我试图完成的简单任务方面表现得非常好。再次,考虑您的UI,观看视频以更好地了解如何开始使用UI,并查看您的UI有多复杂。很可能,你试图做得太快,这是我的情况。 :)