不幸的是 <applicationName>已经停止

2022-01-12 00:00:00 crash android android-emulator java

所以我不知道这里关于双重帖子的规则是什么,任何我没有在我的其他问题上获得后续支持的人.. 任何我的问题被陈述的人,这是我的 logcat

So i don't know what the rules are here about double posts, anywho i didn't get follow up support on my other question.. anywho my problem is stated, heres my logcat

05-28 19:45:03.464: I/ActivityManager(274): Start proc xela.kasea.flyffresell for activity xela.kasea.flyffresell/.Main: pid=793 uid=10046 gids={50046, 1028}
05-28 19:45:03.474: D/dalvikvm(793): Not late-enabling CheckJNI (already on)
05-28 19:45:04.154: I/ARMAssembler(36): generated scanline__00000077:03010104_00008001_00000000 [ 89 ipp] (110 ins) at [0x41548840:0x415489f8] in 564149 ns
05-28 19:45:04.294: D/dalvikvm(793): GC_FOR_ALLOC freed 81K, 6% free 2642K/2784K, paused 26ms, total 27ms
05-28 19:45:04.294: I/dalvikvm-heap(793): Grow heap (frag case) to 3.318MB for 714016-byte allocation
05-28 19:45:04.334: D/dalvikvm(793): GC_FOR_ALLOC freed 2K, 5% free 3337K/3484K, paused 34ms, total 34ms
05-28 19:45:04.414: I/Tag2(793): This is my error msg
05-28 19:45:04.414: D/AndroidRuntime(793): Shutting down VM
05-28 19:45:04.414: W/dalvikvm(793): threadid=1: thread exiting with uncaught exception (group=0x41465700)
05-28 19:45:04.425: E/AndroidRuntime(793): FATAL EXCEPTION: main
05-28 19:45:04.425: E/AndroidRuntime(793): java.lang.RuntimeException: Unable to start activity ComponentInfo{xela.kasea.flyffresell/xela.kasea.flyffresell.Main}: java.lang.NullPointerException
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.os.Looper.loop(Looper.java:137)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.ActivityThread.main(ActivityThread.java:5103)
05-28 19:45:04.425: E/AndroidRuntime(793):  at java.lang.reflect.Method.invokeNative(Native Method)
05-28 19:45:04.425: E/AndroidRuntime(793):  at java.lang.reflect.Method.invoke(Method.java:525)
05-28 19:45:04.425: E/AndroidRuntime(793):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
05-28 19:45:04.425: E/AndroidRuntime(793):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-28 19:45:04.425: E/AndroidRuntime(793):  at dalvik.system.NativeStart.main(Native Method)
05-28 19:45:04.425: E/AndroidRuntime(793): Caused by: java.lang.NullPointerException
05-28 19:45:04.425: E/AndroidRuntime(793):  at xela.kasea.flyffresell.Main.onCreate(Main.java:31)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.Activity.performCreate(Activity.java:5133)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-28 19:45:04.425: E/AndroidRuntime(793):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
05-28 19:45:04.425: E/AndroidRuntime(793):  ... 11 more
05-28 19:45:04.433: W/ActivityManager(274):   Force finishing activity xela.kasea.flyffresell/.Main
05-28 19:45:04.743: I/WindowManager(274): Screenshot max retries 4 of Token{41792b40 ActivityRecord{418a4ce0 u0 xela.kasea.flyffresell/.Main}} appWin=Window{41943b50 u0 Starting xela.kasea.flyffresell} drawState=4
05-28 19:45:04.743: W/WindowManager(274): Screenshot failure taking screenshot for (400x800) to layer 21010
05-28 19:45:05.133: D/AlertService(580): Beginning updateAlertNotification
05-28 19:45:05.214: D/AlertService(580): No fired or scheduled alerts
05-28 19:45:05.263: W/ActivityManager(274): Activity pause timeout for ActivityRecord{418a4ce0 u0 xela.kasea.flyffresell/.Main}
05-28 19:45:05.593: D/AlertService(580): Scheduling next alarm with AlarmScheduler. sEventReminderReceived: null
05-28 19:45:05.853: D/AlarmScheduler(580): No events found starting within 1 week.
05-28 19:45:06.503: I/Process(793): Sending signal. PID: 793 SIG: 9
05-28 19:45:06.513: I/ActivityManager(274): Process xela.kasea.flyffresell (pid 793) has died.

这是我的 main.java.注意:我只使用一个类.

and heres my main.java. Note: i am only using one class.

package xela.kasea.flyffresell;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.ToggleButton;

public class Main extends Activity implements OnClickListener{

    EditText perin, amountPrUnit, buy, sell;
    ToggleButton lazy;
    Button clear, submit, ret;
    double ans, subAnswer;
    TextView pEarned, tAmount;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.display);
        Log.i("Tag2", "This is my error msg");
        initalizer();
        lazy.setOnClickListener(this);
        clear.setOnClickListener(this);
        submit.setOnClickListener(this);
        ret.setOnClickListener(this);
        /*String a = perin.getText().toString();
        String b = amountPrUnit.getText().toString();
        String c = buy.getText().toString();
        String d = sell.getText().toString(); */
    }

    private void initalizer() {
        // TODO Auto-generated method stub
        perin = (EditText) findViewById(R.id.etHowRich);
        amountPrUnit =  (EditText) findViewById(R.id.etAmountPrUnit);
        buy = (EditText) findViewById(R.id.etBuying);
        sell = (EditText) findViewById(R.id.etSellingPrUnit);
        lazy = (ToggleButton) findViewById(R.id.tbBuying);
        clear = (Button) findViewById(R.id.bClear);
        submit = (Button) findViewById(R.id.bSubmit);
        ret = (Button) findViewById(R.id.bReturn);
        pEarned = (TextView) findViewById(R.id.tvEarned);
        tAmount = (TextView) findViewById(R.id.tvAmount);
        /*int a = Integer.parseInt(perin.getText().toString());
        int b = Integer.parseInt(amountPrUnit.getText().toString());
        int c = Integer.parseInt(buy.getText().toString());
        int d = Integer.parseInt(sell.getText().toString());*/
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        int a = Integer.parseInt(perin.getText().toString());
        int b = Integer.parseInt(amountPrUnit.getText().toString());
        int c = Integer.parseInt(buy.getText().toString());
        int d = Integer.parseInt(sell.getText().toString());
        switch(v.getId()){
        case R.id.bClear:
            perin.setText("");
            amountPrUnit.setText("");
            buy.setText("");
            sell.setText("");
            lazy.setChecked(false);
            break;
        case R.id.bReturn:
            setContentView(R.layout.display);
            break;
        case R.id.bSubmit:
            pEarned.setText(c*d-(a-(b*c)));
            tAmount.setText(c*d+(a-(a-(b*c))));
            setContentView(R.layout.finish);
            break;
        case R.id.tbBuying:
            if (lazy.isChecked()){
            buy.setText("");
            double subAnswer = 0;
            int ans = 0;
            subAnswer = a/b;
            ans = (int) Math.floor(subAnswer);
            /*new Integer((int) ans).toString();
            Integer.toString(answer);*/
            buy.setText(ans);;
            }
            break;
        }
    }
}

这个应用程序要做的是,获取几个用户输入的数字并用它们做一些数学运算.

what this app is suppose to do is, take a couple of user inputted numbers and do some math with them.

如果你需要,这里是清单

and if you need it, heres the manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xela.kasea.flyffresell"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Main"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

推荐答案

我认为用户的这条评论需要一个解释 null 在 Java 中的基本主题的答案:

I think this comment from the user requires an answer that explains the fundamental topic of what null is in Java:

如果我可能会问,什么是 NullPointerException?

if i may ask, whats a NullPointerException?

null 指针意味着您正在尝试操作一个没有分配任何内存的 Object 变量.NullPointerException 是 Java 告诉你的方式:嘿,你试图操作的变量(即设置一个监听器)没有指向内存位置;没有 Object 已为此变量实例化,或者它已经被垃圾回收.您正试图去使用尚未建造的建筑物的浴室."

null pointer means that you are trying to manipulate an Object variable that does not have any memory allocated to it. The NullPointerException is Java's way of telling you: "Hey, the variable that you are trying to manipulate (i.e. set a listener to) is pointing to no memory location; there was no Object instantiated for this variable or it was already garbage collected. You are trying to go to use the bathroom of a building that hasn't been built yet."

堆栈跟踪很好(你应该和他成为朋友)并告诉我们在哪一行代码中抛出了 Exception:

The stacktrace is nice (you should be friends with him) and tells us in which line of our code the Exception is thrown:

05-28 19:45:04.425: E/AndroidRuntime(793): Caused by: java.lang.NullPointerException 
05-28 19:45:04.425: E/AndroidRuntime(793):  at xela.kasea.flyffresell.Main.onCreate(Main.java:31)

这意味着你需要去检查那行代码并找出哪个变量是null.大多数现代 IDE 都可以选择引入断点,让您可以在运行时查看变量的状态.一旦您知道哪个变量是 null,您就可以更轻松地找出原因.因此,在您的情况下,导致问题的行是 Main.java 的第 31 行.从评论中我们知道你说那行是:

This means that you need to go and check that line of code and figure out which variable is null. Most modern IDE's have the option of introducing breakpoints that allow you to see a variable's state at runtime. Once you know which variable is null you can more easily figure out why. So in your case, the line causing problems is line 31 of Main.java. From the comments we know you said that line is:

ret.setOnClickListender(this);

这给我们留下了一个选择;ret 必须为 null.然后我们问自己:

That leave us with one option; ret has to be null. Then we ask ourselves:

在正常情况下会发生什么情况,会使 ret 为 null?

What can happen, under normal conditions, that can make ret be null?

1) 变量未初始化;我们忘了初始化它.不是我们的情况.

1) The variable is not initialized; we forgot to initialize it. Not our case.

2) 变量被垃圾回收.不是我们的情况.

2) The variable was garbaged collected. Not our case.

3) 尝试初始化变量时出现问题.可能是我们的情况.

3) Something went wrong when we tried to initialize our variable. Probably our case.

在这种情况下,我们不会通过调用某个类的构造函数来初始化变量,而是通过方法(即 findViewById())来初始化变量.这个方法需要一个 int,它应该是我们想要设置 retViewid,它返回 null 或有问题的 View.所以,如果考虑正确的话,错误可能是我们使用了错误的 id.

In this case, we do not initialize the variable by calling the constructor of some class, we do it via a method (i.e. findViewById()). This method takes an int that should be the id of the View we want to set ret to, and it either returns null or the View in question. So, if thought this out correctly, the error probably is that we used the wrong id.

这个答案更多的是展示一种思维模式,而不是一个实际的解决方案,因为确实没有足够的信息来解决这个问题.

This answer is more to show a thinking pattern rather than an actual solution since there really is not enough information to solve the problem.

相关文章