闪存卡App
您好,我正在制作一个flashcard应用程序,我想在用户点击主fcfront_textView时交换字符串。主要问题是switch语句,因为它没有正确检测不同的情况和/或没有正确地交换字符串。我尝试了所有我知道的东西,下面是最好的情况,它从前到后交换,但它不会换回。
我的想法是我先前存储了问题/答案字符串,并且onClick应该在Q / A之间交换。最后我希望nextButton / prevButton在这对可点击的textView字符串(Q / A)之间导航,并且能够添加QAs,但我不知道如何实现它。
感谢您的时间,请关注我的代码:
<小时/> .java
public class MainActivity extends splashActivity {
Button closeButton, addButton, prevButton, nextButton;
TextView QAText, answerText;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flashcard);
QAText = (TextView) findViewById(R.id.fcfront_textView);
answerText = (TextView) findViewById(R.id.fcfront_textView); //not used anywhere atm
QAText.setOnClickListener(new View.OnClickListener()
{
//function to toggle between Q/A
public void onClick(View v)
{
// exchange();
//switch(Resources.getSystem().getString(R.string.fc_back)) //bad!
//switch(QAText.getText().toString()) //did not work: char != string
switch(R.string.fc_front)
{
case R.string.fc_front:
((TextView)findViewById(R.id.fcfront_textView)).setText(R.string.fc_back);
Toast.makeText(getApplicationContext(), R.string.fc_front , Toast.LENGTH_LONG).show();
//QAText.setVisibility(v.GONE);
break;
case R.string.fc_back:
((TextView)findViewById(R.id.fcfront_textView)).setText(R.string.fc_front);
Toast.makeText(getApplicationContext(), "SWAPPING: back-to-front", Toast.LENGTH_LONG).show();
break;
}
Toast.makeText(getApplicationContext(), "OUT OF THE SWITCH", Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
//gets click event directly from xml
public void next_Clicked(View view)
{
//test:
Toast.makeText(getApplicationContext(), "Next button works!!", Toast.LENGTH_LONG).show();
}
public void prev_Clicked(View view)
{
//test:
Toast.makeText(getApplicationContext(), "Prev button works!!", Toast.LENGTH_LONG).show();
}
//supposed to swap strings (did not work)
private void exchange()
{
String frontstring = getString(R.string.fc_front);
String backstring = getString(R.string.fc_back);
String displaystring = getString(R.string.action_settings);
//test:
// Toast.makeText(getApplicationContext(), "textView works!", Toast.LENGTH_LONG).show();
if (frontstring != displaystring) {
//displaystring = getString(R.string.fc_back);
((TextView) findViewById(R.id.fcfront_textView)).setText(R.string.fc_back);
} else {
//displaystring = getString(R.string.fc_front);
((TextView) findViewById(R.id.fcfront_textView)).setText(R.string.fc_front);
}
//switch case by id did not work:
// switch(view.getId())
// {
// case R.id.fcfront_textView:
// TextView txtView = (TextView)findViewById(R.id.fcfront_textView);
// txtView.setVisibility(View.GONE);
// break;
// }
Toast.makeText(getApplicationContext(), "end of exchange()", Toast.LENGTH_LONG).show();
}
} //end of main
<小时/> layout.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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MyActivity"
android:clickable="true"
android:id="@+id/background"
android:background="#ff80b5ff">
<TextView
android:text="@string/fc_front"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fcfront_textView"
android:layout_centerVertical="true"
android:textSize="30sp"
android:layout_centerHorizontal="true"
android:linksClickable="true"
android:textIsSelectable="false"
android:singleLine="true"
android:onClick="OnClick"
android:clickable="true" />
<!--<TextView-->
<!--android:text="@string/fc_back"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_below="@+id/fcfront_textView"-->
<!--android:layout_centerHorizontal="true"-->
<!--android:id="@+id/fcback_textView"-->
<!--android:textSize="30sp"-->
<!--android:linksClickable="true"-->
<!--android:textIsSelectable="false"-->
<!--android:singleLine="true"-->
<!--android:clickable="true" />-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_prev"
android:id="@+id/prevbutton"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:gravity="bottom|center"
android:layout_weight="1"
android:textSize="30sp"
android:layout_alignParentStart="true"
android:onClick="prev_Clicked"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_next"
android:id="@+id/nextbutton"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:gravity="bottom|center"
android:layout_weight="1"
android:textSize="30sp"
android:hint="Browse +"
android:onClick="next_Clicked"
android:layout_alignParentEnd="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X"
android:id="@+id/closebutton"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:gravity="center"
android:textSize="30sp"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/plusbutton"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:gravity="center"
android:textSize="30sp"
android:layout_alignParentStart="true" />
</RelativeLayout>
<小时/> strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">CSCE305HW1</string>
<string name="fc_front">FLASHCARD: FRONT</string>
<string name="fc_back">FLASHCARD: BACK</string>
<string name="Q1">Question1</string>
<string name="A1">Answer1</string>
<string name="Q2">Question2</string>
<string name="A2">Answer2 </string>
<string name="action_settings">Nothing here yet</string>
<string name="title_activity_main">MainActivity</string>
<string name="title_activity_goodbye">goodbye</string>
<string name="main_next">Next</string>
<string name="main_prev">Previous</string>
</resources>
答案 0 :(得分:1)
我认为您的问题与您的switch
声明有关。你是什么意思switch(R.string.fc_front)
?它是这样的:
switch (2)
{
case 2 :
...
break;
case 1 :
...
break;
}
因为在R.java
文件中,每个资源都存储为数字。
您必须检查TextView
的文字R.string.fc_front
。
试试这个:
if (textView.getText().equals("string1")) {
...
} else if (textView.getText().equals("string2")) {
...
} ...
答案 1 :(得分:1)
尝试使用if-else代替switch进行字符串比较:
if(QAText.getText().toString().equals(getString(R.string.fc_front))){
QAText.setText(R.string.fc_back);
Toast.makeText(getApplicationContext(), R.string.fc_front , Toast.LENGTH_LONG).show();
}else{
QAText.setText(R.string.fc_front);
Toast.makeText(getApplicationContext(), "SWAPPING: back-to-front", Toast.LENGTH_LONG).show();
}
答案 2 :(得分:1)
你应该比较字符串:
string front = getActivity().getResources().getString(R.string.fc_front);
string back = getActivity().getResources().getString(R.string.fc_back);
if (answerText.getText().toString().compareTo (front) == 0 ) {
//do something
} else if (answerText.getText().toString().compareTo (back) == 0 ) {
// do something else
}
不要使用equals比较字符串,而是使用compareTo。
你应该删除开关盒,并使用if / else代替。