简体   繁体   English

我的Android应用程序意外关闭。 Eclipse表示无法连接到本地主机

[英]My android app closes unexpectedly. Eclipse says it can't connect to the local host

I'm creating an android application. 我正在创建一个android应用程序。 It compiles well and eclipse does not spot any errors. 它编译良好,并且Eclipse不会发现任何错误。 However when I run it I get this in the stack trace. 但是,当我运行它时,会在堆栈跟踪中得到它。

<disconnected>DalvikVM[localhost:8639]  

Here is my code: 这是我的代码:

package com.warhammerdicerrolleralpha;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class myMain extends Activity 
{

    EditText enternumberofdice;

    TextView textGenerateNumber;

    int number1;

    int number2;

    ImageView i;

    private EditText text, text2, text3;

    private Button btutorial1;

    private int myFaceValue;

    int myNum;

    /**
     * Called when the activity is first created.
     * 
     * @return
     */
    @Override

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        textGenerateNumber = (TextView) findViewById(R.id.text4);

        number1 = Integer.parseInt(text.getText().toString());

        number2 = Integer.parseInt(text2.getText().toString());

        ImageView i = new ImageView(this);

        i.setAdjustViewBounds(true);

    }

    public void go() 
    {
        while (myNum > 0) 
        {

            textGenerateNumber.setText(String.valueOf(enternumberofdice));

             --myNum;

            return;
        }
    }

    public int roll() 
    {
        int val = (int) (6 * Math.random() + 1); // Range 1-6
        setValue(val);
        return val;
    }

    {
        try 
        {
            myNum = Integer.parseInt(enternumberofdice.getText().toString());
        } 
            catch (NumberFormatException nfe) 
        {
            enternumberofdice.setText("Does not work");
        }
    }

    public int getValue() 
    {
        return myFaceValue;
    }

    public void setValue(int myFaceValue) 
    {
        this.myFaceValue = myFaceValue;

    }

    {
        switch (myFaceValue) 
        {
        case 5:
            i.setImageResource(R.drawable.dicefive);
            break;
        case 1:
            i.setImageResource(R.drawable.diceone);
            break;
        case 3:
            i.setImageResource(R.drawable.dicethree);
            break;
        case 2:
            i.setImageResource(R.drawable.dicetwo);
            break;
        case 4:
            i.setImageResource(R.drawable.dicefour);
            break;
        case 6:
            i.setImageResource(R.drawable.dicesix);
            break;
        default:
            i.setImageResource(R.drawable.error);
            break;
        }

        text = (EditText) findViewById(R.id.editText1);

        text2 =(EditText) findViewById(R.id.editText2);

        text3 = (EditText) findViewById(R.id.editText3);  

        btutorial1 = (Button) findViewById(R.id.button1);

        btutorial1.setOnClickListener((OnClickListener) this);

        Button buttonGenerate = (Button) findViewById(R.id.button1);

        enternumberofdice = (EditText) findViewById(R.id.enternumberofdice);

        Button buttonGenerate2 = (Button) findViewById(R.id.battlecalculate);

        buttonGenerate2.setOnClickListener(new OnClickListener()    
        {

            @Override
            public void onClick(View v) 
            {
                    setContentView(R.layout.main2);
            }

        });

        buttonGenerate.setOnClickListener(new OnClickListener()     
        {
            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub
                go();

                roll();
            }

        });
    }

    public void onClick(View view) 
    {
        switch (view.getId()) 
        {
            case R.id.button1:

                if (number1 > number2) 
                {
                    text3.setText("Three and above");       
                    return;
                }

                else if (number1 < number2) 
                {
                    text3.setText("Five and above");        
                    return;
                }

                else if (number1 == number2) 
                {
                    text3.setText("Four and above");        
                    return;
                }

                else
                {
                    text3.setText("Not Working");       
                    return;
                }

        }
    }
}

PS How do you add xml code to your post. PS如何将xml代码添加到帖子中。 When I add xml code to my post, it doesn't appear in the preview page. 当我在自己的帖子中添加xml代码时,它不会出现在预览页面中。

Here is my stack trace. 这是我的堆栈跟踪。

DalvikVM[localhost:8695] DalvikVM [本地主机:8695]
Thread [<1> main] (Suspended (exception RuntimeException)) 线程[<1> main](已暂停(RuntimeException异常))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2585 ActivityThread.performLaunchActivity(ActivityThread $ ActivityRecord,Intent)行:2585
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679 ActivityThread.handleLaunchActivity(ActivityThread $ ActivityRecord,Intent)行:2679
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125 ActivityThread$H.handleMessage(Message) line: 2033 ActivityThread.access $ 2300(ActivityThread,ActivityThread $ ActivityRecord,Intent)行:125 ActivityThread $ H.handleMessage(Message)行:2033
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 Looper.loop() line: 123 ActivityThread.main(String[]) line: 4627 ActivityThread $ H(Handler).dispatchMessage(Message)行:99 Looper.loop()行:123 ActivityThread.main(String [])行:4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invokeNative(Object,Object [],Class,Class [],Class,int,boolean)行:不可用[本机方法]
Method.invoke(Object, Object...) line: 521 Method.invoke(Object,Object ...)第521行
ZygoteInit$MethodAndArgsCaller.run() line: 868 ZygoteInit $ MethodAndArgsCaller.run()行:868
ZygoteInit.main(String[]) line: 626 NativeStart.main(String[]) line: not available [native method] ZygoteInit.main(String [])行:626 NativeStart.main(String [])行:不可用[本机方法]
Thread [<6> Binder Thread #2] (Running) Thread [<5> Binder Thread #1] (Running) 线程[<6>活页夹线程#2](正在运行)线程[<5>活页夹线程#1](正在运行)

The class-level variable initialization you do, eg textGenerateNumber , must be done after the call to to setContentView in the onCreate method. 您必须在onCreate方法中调用setContentView 之后完成对类级变量的初始化,例如textGenerateNumber

Update: restructuring the code you should have something like this. 更新:重组代码,您应该具有以下内容。 Though, the number1 and number2 assignments doesn't make sense since you haven't initialized the text and text2 variables. 但是,由于尚未初始化texttext2变量,因此number1number2分配没有意义。

....

EditText enternumberofdice;
TextView textGenerateNumber;
private EditText text, text2, text3;
private Button btutorial1;
int number1;
int number2;
ImageView i;
private int myFaceValue;
int myNum;


@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    textGenerateNumber = (TextView) findViewById(R.id.text4);

    //BUG: will fail since text/text2 isn't initialized
    //number1 = Integer.parseInt(text.getText().toString());
    //number2 = Integer.parseInt(text2.getText().toString());

    i = new ImageView(this);
    i.setAdjustViewBounds(true);
}
final TextView textGenerateNumber = (TextView) findViewById(R.id.text4);

is run before the onCreate method so your views don't exist yet. onCreate方法之前运行,因此您的视图尚不存在。 Add all code to retrieve views after your call to setContentView() . 在调用setContentView()之后,添加所有代码以检索视图。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM