Исключение при запуске простого приложения - PullRequest
0 голосов
/ 31 марта 2011

Я новичок в Android.Я создал приложение simlpe только с LoginDialog, и при попытке запустить приложение я получаю следующую ошибку:

[2011-03-31 15:08:00 - ddmlib]An established connection was aborted by the software in your host machine
java.io.IOException: An established connection was aborted by the software in your host machine
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
at com.android.ddmlib.Client.sendAndConsume(Client.java:574)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:420)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:854)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:822)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:781)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:649)
at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:42)
at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:577)

Когда я запускаю эмулятор, я получаю сообщение «Cannto find internet», Интернет включенпочему он не может найти интернет.И вышеупомянутые ошибки, я не использую ничего подобного в приложении.Просто введите LoginDialog с 2 текстами редактирования и 2 кнопками.В порядке, проверяет значения edittext и отображает их и закрывает диалоговое окно.При отмене кнопка просто закрывает диалоговое окно.

В моем классе Activity onCreate я добавляю эти 3 строки:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ld = new LoginDialog(this.getApplicationContext());
    ld.show();
}

LoginDialog расширяет Dialog и имеет 2 edittext и 2 кнопки.Я использую эмулятор Android 3.0 и 5444.

### Обновленный КОД:

Манифест:

    <uses-sdk android:minSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name"><uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER"></uses-permission>
    <activity android:name=".StartUltimate"
              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>

Я только что добавил 2 разрешения на использование, остальное все - генерируемый код.Я не знал, какие еще разрешения добавить.В моем классе Activity: static final int DIALOG_LOGIN_ID = 0;static final int DIALOG_ABOUT_ID = 1;

    protected void OnResume() {
    super.onResume();
    showDialog(R.id.user_pws_root, null);  // DIALOG_LOGIN_ID - tried with this also

    //this.finish();
}


protected Dialog onCreateDialog(int id) {
    Dialog dialog = null;
    switch(id) {
        case DIALOG_LOGIN_ID:
            // Create an instance of the login dialog
            ld = new LoginDialog(this.getApplicationContext());
            dialog = ld;
            //return ld;
            break;
        case DIALOG_ABOUT_ID:
            dialog = null;
            break;
    }
    return dialog;
}

showDialog будет вызывать onCreateDialog, передавая идентификатор.createDialog создаст его экземпляр и должен быть показан.Но это не так.

Код LoginDaialog:

public class LoginDialog extends Dialog {
private Button btn_ok, btn_cancel;
private EditText txt_username, txt_password;

public LoginDialog(Context context) {
    super(context);
    init();
}

private void init() {
    this.setContentView(R.layout.user_pass_dialog);
    this.setTitle("Login to Ultimate VPN");
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,  WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

    btn_ok = (Button) findViewById(R.id.user_pwd_btn_ok);
    btn_cancel = (Button) findViewById(R.id.user_pwd_btn_cancel);

    txt_username = (EditText) findViewById(R.id.user_pwd_username);
    txt_password = (EditText) findViewById(R.id.user_pwd_password);

    txt_username.setFocusable(true);
    btn_ok.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String username = LoginDialog.this.txt_username.getText().toString();
            String password = LoginDialog.this.txt_password.getText().toString();

            if (username.length() > 0 && password.length() > 0)
                Toast.makeText(LoginDialog.this.getContext(), "You have entered : " + username + ", " + password, Toast.LENGTH_SHORT).show();

            LoginDialog.this.dismiss();
        }
    });

    btn_cancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            LoginDialog.this.dismiss();
        }
    });
}

} ​​

С этим кодом я вижу только черный экран со значком андроида и именем приложения в верхней частиэкран.Все, что я хочу сделать, это при запуске приложения, открыть logindialog.Попросите пользователя ввести данные и при отклонении loginDialog об этом должно быть сообщено.Вот и все.Я также ссылаюсь на API и http://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog и пытаюсь выяснить, но просто не могу этого сделать.И это исключение в окне консоли продолжает появляться.Я не могу даже найти такой чистый пример в сети, который я могу использовать в качестве ссылки.Куда я иду не так и как это исправить?

Пожалуйста, помогите мне понять, почему я сталкиваюсь с этой ошибкой.В чем проблема с кодом.

Спасибо

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

Я думаю, у меня есть решение. Вы установили соответствующие разрешения в AndroidManifest? Невыполнение этого требования может привести к исключению, как вы описали.

1 голос
/ 31 марта 2011

Это не похоже на ошибку из вашего кода. Вы пытались использовать другой AVD? Я также попытался бы прокомментировать строки LoginDialog, чтобы вы просто получали пустой экран при запуске приложения.

Приложение запускается или вы получаете только сообщение "нет интернета"? Что вы видите в своем LogCat?

0 голосов
/ 31 марта 2011

Кажется, проблема не в вашем приложении, а в эмуляторе.Я думаю, вы получите ту же ошибку при попытке запустить эмулятор без вашего приложения.Вы можете запустить эмулятор вручную, перейдя в «Android SDK and AVD Manager» и выбрав «Пуск».

Если все в порядке, попробуйте открыть предустановленное приложение «Интернет».Вы можете просматривать веб-страницы через это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...