当前位置: 首页 > 知识库问答 >
问题:

元素初始化导致应用程序崩溃

董俊晖
2023-03-14

当我初始化的元素应用程序崩溃,如果我不初始化任何元素的应用程序显示的布局只是罚款和做一些基本的功能,我已经添加了使用在XML的onClick属性的方法

我需要从EditText元素中提取数据来进行计算。

java代码:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.*;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

//setting up the elements
EditText finInv = (EditText)findViewById(R.id.finInv);
String finInvString= finInv.getText().toString();
int investment=Integer.parseInt(finInvString);

Button button14=(Button)findViewById(R.id.button14);

EditText rawBroRate=((EditText) findViewById(R.id.bronzeRate));

EditText rawSilRate=((EditText) findViewById(R.id.silverRate));

EditText rawGoldRate=((EditText) findViewById(R.id.goldRate));

EditText rawEliteRate=((EditText) findViewById(R.id.eliteRate));

//there's more but I skipped it
}

坠机记录:

致命例外:主进程:com.ajaydubey.fifamobilebulktradeprofitcounter,PID:17627java.lang.运行时异常:无法启动活动组件信息{com.ajaydubey.fifamobilebulktradeprofitcounter/com.ajaydubey.fifamobilebulktradeprofitcounter.MainActivity}:java.lang.数字格式异常:无效int:""在android.app.ActivityThread.perform启动活动(ActivityThread.java:2423)在android.app.ActivityThread.handle启动活动(ActivityThread.java:2483)在android.app.ActivityThread.access900美元(ActivityThread.java:153)在android.app.ActivityThread$H. handleMessage(ActivityThread.java:1349)在android.os.Handler.dispatch消息(Handler.java:102)在android.os.Looper.loop(Looper. java: 148)在android. app。ActivityThread. main(ActivityThread. java: 5438)在java. lang. reect。方法。调用(本机方法)在java. lang。整数. java: 138)在java. lang。整数. parseInt(整数. java: 358)在java. lang。整数. parseInt(整数. java: 358)在java. lang。整数. parseInt(整数. java: 334)ActivityThread$H. handleMessage(ActivityThread. java: 1349)在android. os. Handler.调度消息(Handler. java: 102)在android. os. Looper. cle(Looper. java: 148)在android. app. ActivityThread. main(ActivityThread. java: 5438)在java. lang. reect。方法。调用(本机方法)在com. android. interal. os。ZygoteInit$metodAndArgsCaller. run(ZygoteInit. java: 738)在com. android. os。ZygoteInit. main(ZygoteInit. java: 628)

我不熟悉Android系统,可以原谅任何愚蠢的错误

共有3个答案

长孙雅志
2023-03-14

初始化应该在onCreate方法中。请看一下这个代码

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.*;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

//setting up the elements
EditText finInv = (EditText)findViewById(R.id.finInv);
String finInvString= finInv.getText().toString();
int investment=Integer.parseInt(finInvString);

Button button14=(Button)findViewById(R.id.button14);

EditText rawBroRate=((EditText) findViewById(R.id.bronzeRate));

EditText rawSilRate=((EditText) findViewById(R.id.silverRate));

EditText rawGoldRate=((EditText) findViewById(R.id.goldRate));

EditText rawEliteRate=((EditText) findViewById(R.id.eliteRate));
}

}
宗政坚白
2023-03-14

您必须将其放在onCreate()方法中,而不是放在外部,因为在初始化过程中,您没有使用setContentView(..)设置视图 例如,像这样修复它

@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     EditText finInv = (EditText) findViewById(R.id.finInv);
     String finInvString = finInv.getText().toString();
     int investment = Integer.parseInt(finInvString);
     Button button14 = (Button) findViewById(R.id.button14);
     EditText rawBroRate = ((EditText) findViewById(R.id.bronzeRate));
     EditText rawSilRate = ((EditText) findViewById(R.id.silverRate));
     EditText rawGoldRate = ((EditText) findViewById(R.id.goldRate));
     EditText rawEliteRate = ((EditText) findViewById(R.id.eliteRate));
 }

宓和同
2023-03-14

在onCreate方法中初始化视图,如下所示,并对FininString执行空输入检查:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.*;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //setting up the elements
    EditText finInv = (EditText)findViewById(R.id.finInv);
    String finInvString= finInv.getText().toString();

    if(!TextUtils.isEmpty(finInvString){ // Do make sure to set android:inputType="number" in your XML layout file.
        int investment=Integer.parseInt(finInvString);
    }
    Button button14=(Button)findViewById(R.id.button14);

    EditText rawBroRate=((EditText) findViewById(R.id.bronzeRate));

    EditText rawSilRate=((EditText) findViewById(R.id.silverRate));

    EditText rawGoldRate=((EditText) findViewById(R.id.goldRate));

    EditText rawEliteRate=((EditText) findViewById(R.id.eliteRate));
}



}

**更新**

在布局文件中,将此标记添加到id为finInv的EditText元素中:

android: inputType="数字"

 类似资料:
  • 经过一些调试,我找到了这行代码 导致我的应用程序崩溃,我已经尝试过了 ; 但结果还是一样,有什么帮助吗??

  • 这里是Android开发者新手。我在MainActivity中使用recyclerview,应用程序不断崩溃。 任何帮助都将受到赞赏! 编辑:对不起,我是新来的。我已经附加了Logcat。和其他xml文件。谢谢 这是我的代码: 列出你的布局。xml: activity_main.xml: } ProductAdapter。java类: } Logcat: 致命异常:主进程:e.wolverine2

  • 经过测试,它在非android程序上工作,但在android上初始化后立即崩溃。日志cat也没有生成任何错误消息。我从CircularFifoBuffer找到了这个。 编辑2: 08-05 21:12:48.837:I//system/bin/batteryd(1189):1566474 v_bat 3.678(3.677),i_supply 0.500,i_demand 0.282=>v_bat

  • 这些是我的分级依赖项: 这是崩溃日志 致命异常:主进程:com.example.myapp,pid:16817 java.lang.nosuchmethoderror:LCOM/mapbox/services/android/telemetry类中没有虚拟方法初始化(Landroid/content/context;LJava/lang/string;LJava/lang/string;LCOM/

  • 我正在使用内置于Web View的Android开发浏览器。其中我面临的一个问题是,当我访问http://crashmybrowser.com测试浏览器上的选项卡崩溃时,我的整个浏览器应用程序都会崩溃。但是,当在chrome或Opera上进行相同的测试时,这些浏览器会在崩溃中幸存下来,并且只有特定的选项卡崩溃是由于访问上述网站而预期的结果。有人能帮助理解我如何在使用Webview的浏览器上处理此崩

  • 问题内容: 我正在开发一个Android 3.1应用程序,该应用程序使用USB主机模式通过USB上的MIDI与我的键盘(Korg M3)进行通信。这是在装有Android 4.0.3的Xoom上运行的。我可以通过USB接收MIDI消息而没有任何问题,但是将音符数据发送回键盘的效果是好坏参半,延迟半秒钟后便会频繁崩溃。 这是我在点击操作栏上的按钮发送注释时不断遇到的错误: E / dalvikvm(