- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我开始编写 Android 应用程序,但陷入了需要从字符串获取值的部分。目前正在尝试制作 Android 版计算器。在此示例中,我尝试获取仅用于添加两个值的值。
添加我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Bind({R.id.button0, R.id.button1, R.id.button2, R.id.button3, R.id.button4, R.id.button5, R.id.button6, R.id.button7, R.id.button8,
R.id.button9, R.id.buttonDot, R.id.buttonC, R.id.buttonDeleteLastSymbol, R.id.buttonMultiplication, R.id.buttonDivision, R.id.buttonSubtraction, R.id.buttonEqual})
List<Button> button;
@Bind(R.id.editText1)
EditText editText;
public String sign = "";
public Double mathDouble, mathDouble2;
static final ButterKnife.Action<View> DISABLE = new ButterKnife.Action<View>() {
@Override
public void apply(View view, int index) {
view.setEnabled(false);
}
};
static final ButterKnife.Setter<View, Boolean> ENABLED = new ButterKnife.Setter<View, Boolean>() {
@Override
public void set(View view, Boolean value, int index) {
view.setEnabled(value);
}
};
//Buttons 0-9
@OnClick({R.id.button0, R.id.button1, R.id.button2, R.id.button3, R.id.button4, R.id.button5, R.id.button6, R.id.button7, R.id.button8,
R.id.button9, R.id.buttonDot})
void inputValue(Button button) {
editText.append(button.getText());
}
@OnClick({R.id.buttonPlus, R.id.buttonSubtraction, R.id.buttonDivision, R.id.buttonMultiplication})
void inputSign(Button button) {
sign = button.getText().toString();
editText.append(sign);
}
public Double FirstValue() {
String writtenText = editText.getText().toString();
String firstValue = writtenText.substring(0, writtenText.indexOf("+"));
return mathDouble = Double.parseDouble(firstValue);
}
Double SecondValue() {
String writtenText = editText.getText().toString();
String secondValue = writtenText.substring(writtenText.indexOf("+") + 1, writtenText.charAt(writtenText.length() - 1));
return mathDouble2 = Double.parseDouble(secondValue);
}
//Buttons Equal, CE and C
@OnClick(R.id.buttonC)
void WriteLeftBracket() {
editText.setText(String.valueOf(""));
}
@OnClick(R.id.buttonDeleteLastSymbol)
void WriteRightBracket() {
if (editText.getText().toString().length() > 0) {
editText.setText(editText.getText().toString().substring(0, editText.getText().toString().length() - 1));
editText.setSelection(editText.getText().length());
}
}
@OnClick(R.id.buttonEqual)
void Equal(Button button) {
editText.append(button.getText());
editText.setText(Double.toString(mathDouble + mathDouble2));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ButterKnife.bind(this);
}
}
content_main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main">
<LinearLayout
android:id="@+id/layout1"
android:layout_width="match_parent"
android:layout_height="60dp">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:singleLine="true"
android:lines="1"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/layout1">
<Button
android:id="@+id/buttonC"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="@string/erase"
android:textSize="30sp" />
<Button
android:id="@+id/buttonDeleteLastSymbol"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="@string/delete"
android:textStyle="bold"
android:textSize="30sp" />
<Button
android:id="@+id/buttonMultiplication"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="@string/multiplication"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout1">
<Button
android:id="@+id/button7"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/seven"
android:textSize="30sp" />
<Button
android:id="@+id/button8"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/eight"
android:textSize="30sp" />
<Button
android:id="@+id/button9"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/nine"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout2">
<Button
android:id="@+id/button4"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/four"
android:textSize="30sp" />
<Button
android:id="@+id/button5"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/five"
android:textSize="30sp" />
<Button
android:id="@+id/button6"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/six"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout3">
<Button
android:id="@+id/button1"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/one"
android:textSize="30sp" />
<Button
android:id="@+id/button2"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/two"
android:textSize="30sp" />
<Button
android:id="@+id/button3"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/three"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout4">
<Button
android:id="@+id/button0"
android:layout_width="160dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/zero"
android:textSize="30sp" />
<Button
android:id="@+id/buttonDot"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/dot"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/layout1"
android:layout_toRightOf="@id/linearLayout1">
<Button
android:id="@+id/buttonDivision"
android:layout_width="80dp"
android:layout_height="80dp"
android:layoutDirection="inherit"
android:text="@string/division"
android:textSize="30sp" />
</LinearLayout>
<Button
android:id="@+id/buttonSubtraction"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_below="@+id/linearLayout1"
android:layout_toEndOf="@+id/linearLayout1"
android:text="@string/subtraction"
android:textSize="30sp" />
<Button
android:id="@+id/buttonEqual"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_below="@+id/linearLayout2"
android:layout_toEndOf="@+id/linearLayout1"
android:text="@string/equal"
android:textSize="30sp" />
<Button
android:id="@+id/buttonPlus"
android:layout_width="80dp"
android:layout_height="160dp"
android:layout_below="@+id/linearLayout3"
android:layout_toEndOf="@+id/linearLayout1"
android:text="@string/plus"
android:textSize="30sp"
/>
</RelativeLayout>
strings.xml
<resources>
<string name="app_name">Calculator</string>
<string name="action_settings">Settings</string>
<string name="dot">.</string>
<string name="plus">+</string>
<string name="subtraction">-</string>
<string name="division">/</string>
<string name="multiplication">*</string>
<string name="equal">=</string>
<string name="erase">C</string>
<string name="delete">←</string>
//Numbers
<string name="one">1</string>
<string name="two">2</string>
<string name="three">3</string>
<string name="four">4</string>
<string name="five">5</string>
<string name="six">6</string>
<string name="seven">7</string>
<string name="eight">8</string>
<string name="nine">9</string>
<string name="zero">0</string>
<string name="illegal_argument_exeption">Cannot Divide By Zero!</string>
</resources>
最佳答案
用它来获取值(value):
getResources().getString("R.string.StringName");
例如
String zero = getResources().getString("R.string.zero");
关于java - Android 中如何从字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34110794/
如何使用 SPListCollection.Add(String, String, String, String, Int32, String, SPListTemplate.QuickLaunchO
我刚刚开始使用 C++ 并且对 C# 有一些经验,所以我有一些一般的编程经验。然而,似乎我马上就被击落了。我试过在谷歌上寻找,以免浪费任何人的时间,但没有结果。 int main(int argc,
这个问题已经有答案了: In Java 8 how do I transform a Map to another Map using a lambda? (8 个回答) Convert a Map>
我正在使用 node + typescript 和集成的 swagger 进行 API 调用。我 Swagger 提出以下要求 http://localhost:3033/employees/sear
我是 C++ 容器模板的新手。我收集了一些记录。每条记录都有一个唯一的名称,以及一个字段/值对列表。将按名称访问记录。字段/值对的顺序很重要。因此我设计如下: typedef string
我需要这两种方法,但j2me没有,我找到了一个replaceall();但这是 replaceall(string,string,string); 第二个方法是SringBuffer但在j2me中它没
If string is an alias of String in the .net framework为什么会发生这种情况,我应该如何解释它: type JustAString = string
我有两个列表(或字符串):一个大,另一个小。 我想检查较大的(A)是否包含小的(B)。 我的期望如下: 案例 1. B 是 A 的子集 A = [1,2,3] B = [1,2] contains(A
我有一个似乎无法解决的小问题。 这里...我有一个像这样创建的输入... var input = $(''); 如果我这样做......一切都很好 $(this).append(input); 如果我
我有以下代码片段 string[] lines = objects.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.No
这可能真的很简单,但我已经坚持了一段时间了。 我正在尝试输出一个字符串,然后输出一个带有两位小数的 double ,后跟另一个字符串,这是我的代码。 System.out.printf("成本:%.2
以下是 Cloud Firestore 列表查询中的示例之一 citiesRef.where("state", ">=", "CA").where("state", "= 字符串,我们在Stack O
我正在尝试检查一个字符串是否包含在另一个字符串中。后面的代码非常简单。我怎样才能在 jquery 中做到这一点? function deleteRow(locName, locID) { if
这个问题在这里已经有了答案: How to implement big int in C++ (14 个答案) 关闭 9 年前。 我有 2 个字符串,都只包含数字。这些数字大于 uint64_t 的
我有一个带有自定义转换器的 Dozer 映射: com.xyz.Customer com.xyz.CustomerDAO customerName
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 关闭 6 年前。 我想了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是
我已阅读 this问题和其他一些问题。但它们与我的问题有些无关 对于 UILabel 如果你不指定 ? 或 ! 你会得到这样的错误: @IBOutlet property has non-option
这两种方法中哪一种在理论上更快,为什么? (指向字符串的指针必须是常量。) destination[count] 和 *destination++ 之间的确切区别是什么? destination[co
This question already has answers here: Closed 11 years ago. Possible Duplicates: Is String.Format a
我有一个Stream一个文件的,现在我想将相同的单词组合成 Map这很重要,这个词在 Stream 中出现的频率. 我知道我必须使用 collect(Collectors.groupingBy(..)
我是一名优秀的程序员,十分优秀!