【发布时间】:2018-11-07 14:11:24
【问题描述】:
我想用菜单创建一个计算器。
我输入第一个和第二个数字,然后选择是要加、减、除、乘这两个数字还是将相乘的结果乘以 3 或 4。
通过使用选项菜单和上下文菜单。 这是我到目前为止所做的。
package com.example.asus.menuassignment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText text1;
EditText text2;
TextView text;
int fNum;
int sNum;
int result;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (EditText)findViewById(R.id.editText);
text2 = (EditText)findViewById(R.id.editText2);
text = (TextView)findViewById(R.id.textView3);
fNum = Integer.parseInt(text1.getText().toString());
sNum = Integer.parseInt(text2.getText().toString());
registerForContextMenu(text);
}
//options menu part
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
//multiply
case R.id.item1:
result = fNum*sNum;
text.setText(String.valueOf(result));
return true;
//multiplying a result by 3 or 4
case R.id.item11:
result = result * 3;
text.setText(String.valueOf(result));
return true;
case R.id.item12:
result = result * 4;
text.setText(String.valueOf(result));
return true;
//Add
case R.id.item2:
result = fNum + sNum;
text.setText(String.valueOf(result));
return true;
//Subtract
case R.id.item3:
result = fNum - sNum;
text.setText(String.valueOf(result));
return true;
//Divide
case R.id.item4:
result = fNum / sNum;
text.setText(String.valueOf(result));
return true;
}
return super.onOptionsItemSelected(item);
}
//By long pressing the result a context menu appears
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
getMenuInflater().inflate(R.menu.menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId()) {
//multiply
case R.id.item1:
result = fNum * sNum;
text.setText(String.valueOf(result));
return true;
//multiplying a result by 3 or 4
case R.id.item11:
result = result * 3;
text.setText(String.valueOf(result));
return true;
case R.id.item12:
result = result * 4;
text.setText(String.valueOf(result));
return true;
//Add
case R.id.item2:
result = fNum + sNum;
text.setText(String.valueOf(result));
return true;
//Subtract
case R.id.item3:
result = fNum - sNum;
text.setText(String.valueOf(result));
return true;
//Divide
case R.id.item4:
result = fNum / sNum;
text.setText(String.valueOf(result));
return true;
}
return super.onContextItemSelected(item);
}
}
我没有收到任何错误,但应用程序崩溃了,究竟是什么错误或这里缺少什么?
【问题讨论】:
-
你能发布你得到的错误(堆栈跟踪)吗?
-
如果应用程序崩溃有一个错误...请发布您的 logcat
-
什么选项让它崩溃?
-
我编辑了我的问题,并发布了日志猫
-
我不知道是什么导致它崩溃
标签: java android android-studio menu option