Я новичок в 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 и пытаюсь выяснить, но просто не могу этого сделать.И это исключение в окне консоли продолжает появляться.Я не могу даже найти такой чистый пример в сети, который я могу использовать в качестве ссылки.Куда я иду не так и как это исправить?
Пожалуйста, помогите мне понять, почему я сталкиваюсь с этой ошибкой.В чем проблема с кодом.
Спасибо