我对Android编程完全陌生。我正在制作的第一个应用程序遇到了一些问题。每次我运行应用程序时,我的手机(我正在使用它来测试和调试我的应用程序)上会弹出一条消息说“不幸的是,MyNewApp3已停止”。这个错误甚至无法打开我的应用程序。我如何解决这个问题?
这是我的代码:
package newapp.com.bipl.mynewapp3;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
public class Page2 extends AppCompatActivity {
RadioGroup Rg;
RadioButton B;
RadioButton O;
RadioButton H;
EditText Dec;
TextView Ans;
int Num;
String Result;
int b;
int c;
char z;
String s;
String d;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page2);
Toast.makeText(getBaseContext(),"Successful Login",Toast.LENGTH_LONG).show();
Rg = (RadioGroup) findViewById(R.id.RGroup);
B = (RadioButton) findViewById(R.id.Binary_rb);
O = (RadioButton) findViewById(R.id.Octal_rb);
H = (RadioButton) findViewById(R.id.Hexa_rb);
Dec = (EditText) findViewById(R.id.NumEntry_txt);
Ans = (TextView) findViewById(R.id.Answer_lbl);
Num = Integer.parseInt(Dec.getText().toString());
//Num = 161;
if(B.isSelected())
Binary(Num);
if(O.isSelected())
Octal(Num);
if (H.isSelected())
Hexal(Num);
}
/* public void Conversion(){
if(B.isSelected())
Binary(Num);
if(O.isSelected())
Octal(Num);
if (H.isSelected())
Hexal(Num);
}*/
public void Binary(int a){
while(b > 0){
c = a % 2;
b = a/2;
d = "" + c;
s = d.concat(s);
a = b;
}
Result = s;
Toast.makeText(getBaseContext(), "" + Result, Toast.LENGTH_SHORT).show();
Ans.setText("" + Result);
}
public void Octal(int a){
while(b > 0){
c = a % 8;
b = a/8;
d = "" + c;
s = d.concat(s);
a = b;
}
Result = s;
Toast.makeText(getBaseContext(), "" + Result, Toast.LENGTH_SHORT).show();
Ans.setText("" + Result);
}
public void Hexal(int a){
while(b > 0){
c = a % 16;
b = a/16;
if(c>9){
switch (c){
case 10 : z = 'A';
break;
case 11 : z = 'B';
break;
case 12 : z = 'C';
break;
case 13 : z = 'D';
break;
case 14 : z = 'E';
break;
case 15 : z = 'F';
break;
}
d = "" + z;
}
else
d = "" + c;
s = d.concat(s);
a = b;
}
Result = s;
Toast.makeText(getBaseContext(), "" + Result, Toast.LENGTH_SHORT).show();
Ans.setText("" + Result);
}
}
我的LogCat输出(这是我在看到别人建议别人放置LogCat输出后发布的;我不知道它是用来做什么的):
01-12 11:45:52.559 15441-15441/newapp。通用域名格式。bipl。mynewapp3 V/text视图:stopSelectionActionMode()01-12 11:45:52.572 15441-15441/newapp。通用域名格式。bipl。mynewapp3 D/AndroidRuntime:关闭VM 01-12 11:45:52.573 15441-15441/newapp。通用域名格式。bipl。mynewapp3 E/AndroidRuntime:致命异常:主进程:newapp。通用域名格式。bipl。mynewapp3,PID:15441 java。lang.RuntimeException:无法启动活动组件信息{newapp.com.bipl.mynewapp3/newapp.com.bipl.mynewapp3.Page2}:java。lang.NumberFormatException:android上的无效int:“”。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:2521)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2595)。应用程序。活动线程。在Android上获得800美元(ActivityThread.java:178)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1470)。操作系统。处理程序。android上的dispatchMessage(Handler.java:111)。操作系统。活套。android上的loop(Looper.java:194)。应用程序。活动线程。java上的main(ActivityThread.java:5631)。郎。反思。方法在java中调用(本机方法)。郎。反思。方法在com上调用(Method.java:372)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:959)。Android内部的操作系统。合子岩。主要(ZygoteInit.java:754)原因:java。lang.NumberFormatException:java中的int“”无效。lang.Integer。java中的invalidInt(Integer.java:138)。lang.Integer。java上的parseInt(Integer.java:358)。lang.Integer。newapp上的parseInt(Integer.java:334)。通用域名格式。bipl。mynewapp3.Page2。android上的onCreate(第2页,java:41)。应用程序。活动在android上执行创建(Activity.java:6092)。应用程序。仪表。android上的callActivityOnCreate(Instrumentation.java:1112)。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:2468)。应用程序。活动线程。handleLaunchActivity(ActivityThread.java:2595)
您可以添加try-cat将String转换为int。如果它得到无法转换的空字符串之类的东西,则不会崩溃。
try
{
if(str != null){
Num = Integer.parseInt(Dec.getText().toString());
}
else{
Num = 0;
}
}
catch (NumberFormatException e)
{
Num = 0;
}
此实现将停止任何错误的输入转换崩溃。
声明并为您的“Num”变量赋值为零,如下所示
int Num = 0;
然后首先以字符串格式获取EditText值,然后对其进行解析
String mynum = Dec.getText().toString();
Num = Integer.parseInt(mynum);
在这里您可以检查您的myNum
是否为空。
每次显示或使用任何变量进行转换时都必须检查null,问题是您没有将字符串检查为null,而在您的情况下它是null。所以执行
if(Dec != null){
if(Dec.getText() != null){
Num = Integer.parseInt(Dec.getText().toString());
}
}
它应该工作正常!
我在Android Studio 6.0上的模拟器出现了上述崩溃,但在我的设备6.0.1上没有崩溃。模拟器有时会启动相机,但它大多会崩溃,在logcat中没有任何东西来给我指明正确的方向。有人知道这里可能发生了什么吗? 此外,这里有一个图像,当它确实通过。image_capture_camera logcat:
代码 和logcat 06-03 16:59:26.570 972 0-9757/com.example.abhijitroy.superhero E/AndroidRuntime:致命异常:AsyncTask#1进程:com.example.abhijitroy.superhero,PID:9720 java.lang.RuntimeException:在Android.os.AsyncTask
如有任何帮助,不胜感激。
这个想法是在警报开始时启动一个游戏。我在下面展示了manifest.xml。如果我犯了错误,请纠正我。因为我刚接触Android系统,所以我无法理解它。PS:我已经搜索了其他类似的问题,并纠正了许多其他错误,但问题仍然存在。 这是我从教程(AndroidTimeActivity)中获得的警报代码: 这是AlarmReceiver类:
这个想法是在警报开始时启动一个游戏。我已经在下面展示了manifest.xml。如果我犯了错误,请纠正我。因为我是Android的新手,所以我不太懂。PS:我已经搜索了其他类似的问题,并更正了很多其他错误,但问题依然存在。 这是我从一个教程(AndroidTimeActivity)得到的警报代码: 这是AlarmReceiver类: 这里是Manager类,当警报接收器接收到意图时,我要调用它:
我正在通过proj.android-studio编译一个新项目,使用: