Доступ к интернету
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Доступ к интернету
Где код второй активности? Сервис есть?
Re: Доступ к интернету
так у нас тоже дела! мыж не возмущаемся!dimky писал(а):Яж не сижу 3 дня и только в эту ошибку смотрю, у меня и другие занятия есть, в свободное время занимаюсь вот этой бедой.Foenix писал(а):я вообще в этом не очень понимаю, но так просто сидеть и смотреть на ошибку тоже не годится. Я бы например, сформировала свободный от другого кода тестовый фрагмент и запустила бы его, просто чтобы проверить. Если ничего так и не получится, попробовать не на эмуляторе, а на устройстве (или наоборот), если и тогда ничего, то скинуть проект кому-то проверить, если нету знакомых, то сюда. Но он должен быть максимально простым, т.к. в дебрях кода просто реально нет ни у кого времени разбираться. Мы помогаем по мере сил и за минимально возможное время..Темболее что эта ошибка мне ничего не говорит.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Доступ к интернету
Не ну я не столько возмущаюсь отсутствию ответов, сколько реплик типа вот ошибка очень интересная, а что она означает, одному богу известно, ну да ладно. 
А что за сервис?
Вот код второй активности, но до нее дело не доходит, затык происходит еще на стадии авторизации.Где код второй активности? Сервис есть?
А что за сервис?
Код: Выделить всё
package com.part66online;
import java.util.ArrayList;
import java.util.HashMap;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;
public class ActivityTwo extends Activity implements OnTabChangeListener{
TabHost tabHost;
Button button_sign_out;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.logged);
TabHost tabHost = (TabHost)findViewById(R.id.tabhost);
tabHost.setup();
TabHost.TabSpec rssListSpec = tabHost.newTabSpec("Modules");
rssListSpec.setIndicator("Modules");
rssListSpec.setContent(R.id.modulesLayout);
TabHost.TabSpec rssOutputSpec = tabHost.newTabSpec("Progress");
rssOutputSpec.setIndicator("Progress");
rssOutputSpec.setContent(R.id.progressLayout);
TabHost.TabSpec settingsLayoutSpec = tabHost.newTabSpec("Settings");
settingsLayoutSpec.setIndicator("Settings");
settingsLayoutSpec.setContent(R.id.settingsLayout);
tabHost.addTab(rssListSpec);
tabHost.addTab(rssOutputSpec);
tabHost.addTab(settingsLayoutSpec);
tabHost.setCurrentTab(0);
for(int i=0; i<tabHost.getTabWidget().getChildCount(); i++)
{
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#57CFFF"));
}
tabHost.setOnTabChangedListener(this);
/////////////////////////////////////////////////////
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
String xml = ParseXMLMethods.getXML("http://part66online.com/api/modules_list.php");
Document doc = ParseXMLMethods.XMLfromString(xml);
int numResults = ParseXMLMethods.numResults(doc);
NodeList children = doc.getElementsByTagName("module");
for (int i = 0; i < children.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element)children.item(i);
map.put("id", ParseXMLMethods.getValue(e, "id"));
map.put("name", ParseXMLMethods.getValue(e, "name"));
map.put("desc", ParseXMLMethods.getValue(e, "desc"));
mylist.add(map);
}
ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.list_layout,
new String[] { "name", "desc" },
new int[] { R.id.title, R.id.subtitle});
ListView mod_list = (ListView)findViewById(R.id.modules_list);
mod_list.setAdapter(adapter);
/////////////////////////////////////////////////////
button_sign_out = (Button) findViewById(R.id.button_sign_out);
button_sign_out.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
});
}
public void onTabChanged(String tabId) {
//for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
//{
// tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#C35817"));
//}
//tabHost.getTabWidget().getChildAt(3).setBackgroundColor(Color.parseColor("#C35817"));
}
}
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Доступ к интернету
Попробуй это, думаю это из той оперы.
Re: Доступ к интернету
Посмотрел. Попробовал завайпить как там указано - не помагает. А кеш dalvik я очистить не могу, так как на сколько я понимаю это можно сделать только на реальном устройстве. Я все тестирую на эмуляторе, устройства на андройде у меня нет.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Доступ к интернету
Да тут на лицо обращение к интернету в главном потоке.
Вынесите это дело в другой поток и все заработает.
PS: Вот так просто вставлять в адресную строку данные введенные пользователем не самое лучшее и безопасное решение. У вас же POST запрос, передавайте логин и пароль через параметры.
Вынесите это дело в другой поток и все заработает.
PS: Вот так просто вставлять в адресную строку данные введенные пользователем не самое лучшее и безопасное решение. У вас же POST запрос, передавайте логин и пароль через параметры.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Доступ к интернету
А почему тогда при установке minsdk ниже, интернет есть?
А что означает вынести в другой поток?
Ну там ничего опастного нету на мой взгляд, скрипт на сервере просто выдает верны ли данные для входа или нет, никакой личной информации.
В любом случае сделаю конечно потом оптимальнее. Просто я только начал, то что я тут накалякал это мое первое знакомство с программированием под андроид.
Да и сам сайт, для которого я делаю клиент, не имеет внутри ценной пользовательской иформацией. Авторизация нужна лишь для проверки куплена ли подписка и для занесения результатов в базу.
А что означает вынести в другой поток?
Ну там ничего опастного нету на мой взгляд, скрипт на сервере просто выдает верны ли данные для входа или нет, никакой личной информации.
В любом случае сделаю конечно потом оптимальнее. Просто я только начал, то что я тут накалякал это мое первое знакомство с программированием под андроид.
Да и сам сайт, для которого я делаю клиент, не имеет внутри ценной пользовательской иформацией. Авторизация нужна лишь для проверки куплена ли подписка и для занесения результатов в базу.
Re: Доступ к интернету
Вот это как раз не удивительнО, тк. это ограничение было введено позжеdimky писал(а):А почему тогда при установке minsdk ниже, интернет есть?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Доступ к интернету
в 2.3.3 и ниже ещё можно работать с сетью с главного потока, на 3 и выше уже в отдельном потоке, но всё равно всё лучше делать в отдельном
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Доступ к интернету
Начина с 3 андроида это запрещено.dimky писал(а):А почему тогда при установке minsdk ниже, интернет есть?
А что означает вынести в другой поток?
Что произойдет, если я буду использовать пароль "password&password=password"?dimky писал(а):Ну там ничего опастного нету на мой взгляд, скрипт на сервере просто выдает верны ли данные для входа или нет, никакой личной информации.
В любом случае сделаю конечно потом оптимальнее. Просто я только начал, то что я тут накалякал это мое первое знакомство с программированием под андроид.
Да и сам сайт, для которого я делаю клиент, не имеет внутри ценной пользовательской иформацией. Авторизация нужна лишь для проверки куплена ли подписка и для занесения результатов в базу.
И еще кое-что. Когда у вас возникает ошибка в методе getXML Вы не выводите информацию о ней в лог, а просто записываете в переменную. Именно по этому Вам не могли долго помочь. Никогда так не делайте даже если точно уверены в работоспособности программы.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Доступ к интернету
Ничего не будет
Авторизация не пройдет.
Дело в том что я этот класс по работе с xml подсмотрел в уроке. Поэтому тонкостей всех пока не знаю. А что означает вынести в другой поток?
Дело в том что я этот класс по работе с xml подсмотрел в уроке. Поэтому тонкостей всех пока не знаю. А что означает вынести в другой поток?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Доступ к интернету
грубоno-- писал(а):Это означает вот что.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Доступ к интернету
Я не любитель грубить. Вопрос был из разряда сильно базовых. С таким вопросом надо учить java, а не андроид.
Re: Доступ к интернету
Хорошо ребят, я понял что стоит двигатся в направлении AsyncTask. Прочел местный урок, пытаюсь реализовать. Но при обращении к UI элементу из метода onPreExecute() приложение вылетает. Почему так, что я делаю не правильно?
MainActivity после модификации стал таким:
В логкате такое:
MainActivity после модификации стал таким:
Код: Выделить всё
package com.part66online;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener
{
Button btnActTwo;
TextView test_field;
MyTask mt;
String response;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnActTwo = (Button) findViewById(R.id.login_button);
btnActTwo.setOnClickListener((OnClickListener) this);
}
public void onClick(View v)
{
switch (v.getId())
{
case R.id.login_button:
mt = new MyTask();
mt.execute();
break;
default:
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class MyTask extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
test_field.setText("Connecting...");
}
@Override
protected Void doInBackground(Void... params)
{
final TextView login = (TextView) findViewById(R.id.login);
final TextView pass = (TextView) findViewById(R.id.pass);
final TextView test_field = (TextView) findViewById(R.id.text);
CharSequence username = login.getText();
CharSequence password = pass.getText();
String response = ParseXMLMethods.getXML("http://part66online.com/api/login.php?username=" + username + "&password=" + password);
return null;
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
/*
if(response.equals("ok"))
{
//Intent intent = new Intent(this, ActivityTwo.class);
//startActivity(intent);
test_field.setText("ok");
}
else
{
test_field.setText(response);
}
*/
}
}
}Код: Выделить всё
05-31 19:20:47.225: D/AndroidRuntime(13117): Shutting down VM
05-31 19:20:47.225: W/dalvikvm(13117): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
05-31 19:20:47.245: E/AndroidRuntime(13117): FATAL EXCEPTION: main
05-31 19:20:47.245: E/AndroidRuntime(13117): java.lang.NullPointerException
05-31 19:20:47.245: E/AndroidRuntime(13117): at com.part66online.MainActivity$MyTask.onPreExecute(MainActivity.java:56)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.os.AsyncTask.execute(AsyncTask.java:534)
05-31 19:20:47.245: E/AndroidRuntime(13117): at com.part66online.MainActivity.onClick(MainActivity.java:36)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.view.View.performClick(View.java:4204)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.view.View$PerformClick.run(View.java:17355)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.os.Handler.handleCallback(Handler.java:725)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.os.Handler.dispatchMessage(Handler.java:92)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.os.Looper.loop(Looper.java:137)
05-31 19:20:47.245: E/AndroidRuntime(13117): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-31 19:20:47.245: E/AndroidRuntime(13117): at java.lang.reflect.Method.invokeNative(Native Method)
05-31 19:20:47.245: E/AndroidRuntime(13117): at java.lang.reflect.Method.invoke(Method.java:511)
05-31 19:20:47.245: E/AndroidRuntime(13117): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-31 19:20:47.245: E/AndroidRuntime(13117): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-31 19:20:47.245: E/AndroidRuntime(13117): at dalvik.system.NativeStart.main(Native Method)
05-31 19:20:47.296: W/ActivityManager(317): Force finishing activity com.part66online/.MainActivity
05-31 19:20:47.305: W/WindowManager(317): Failure taking screenshot for (246x410) to layer 21015
05-31 19:20:47.485: E/SurfaceFlinger(37): ro.sf.lcd_density must be defined as a build property
05-31 19:20:47.825: W/ActivityManager(317): Activity pause timeout for ActivityRecord{40cd4220 u0 com.part66online/.MainActivity}
05-31 19:20:48.175: E/SurfaceFlinger(37): ro.sf.lcd_density must be defined as a build propertyRe: Доступ к интернету
ой какая каша, удаляй всё пока никто не видел)))
в асинхронном потоке ты инициализируешь TextView что уже не правильно, а обращаешься к нему в onPreExecute а он там ещё нуловый, потому что onPreExecute выполняется раньше чем doInBackground. Проходи ещё раз урок и внимательней.
в асинхронном потоке ты инициализируешь TextView что уже не правильно, а обращаешься к нему в onPreExecute а он там ещё нуловый, потому что onPreExecute выполняется раньше чем doInBackground. Проходи ещё раз урок и внимательней.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Доступ к интернету
Понял, вынес в метод onCreate.
Судя по уроку, onPreExecute и onPostExecute имеют доступ к UI, следовательно я могу взаимодействовать с интерфейсом в этих методах.
Сделал вот так, совсем просто:
Приложение вываливается со следующим логом:
Жаль что причина вылета не пишется явно, я вот пишу еще время от времени на php или С для микроконтроллеров, там все ошибки боле менее явным образом выделяются. Тут же этот лог мне ничего не говорит. Может я не в тот лог смотрю? 
Судя по уроку, onPreExecute и onPostExecute имеют доступ к UI, следовательно я могу взаимодействовать с интерфейсом в этих методах.
Сделал вот так, совсем просто:
Код: Выделить всё
package com.part66online;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener
{
Button btnActTwo;
TextView test_field;
MyTask mt;
String response;
TextView login;
TextView pass;
@SuppressWarnings("unused")
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView login = (TextView) findViewById(R.id.login);
TextView pass = (TextView) findViewById(R.id.pass);
TextView test_field = (TextView) findViewById(R.id.text);
btnActTwo = (Button) findViewById(R.id.login_button);
btnActTwo.setOnClickListener((OnClickListener) this);
}
public void onClick(View v)
{
switch (v.getId())
{
case R.id.login_button:
mt = new MyTask();
mt.execute();
break;
default:
break;
}
}
class MyTask extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
test_field.setText("Connecting...");
}
@Override
protected Void doInBackground(Void... params)
{
return null;
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
test_field.setText("Complete");
}
}
}Код: Выделить всё
06-01 11:15:42.555: E/AndroidRuntime(28377): FATAL EXCEPTION: main
06-01 11:15:42.555: E/AndroidRuntime(28377): java.lang.NullPointerException
06-01 11:15:42.555: E/AndroidRuntime(28377): at com.part66online.MainActivity$MyTask.onPreExecute(MainActivity.java:67)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.os.AsyncTask.execute(AsyncTask.java:534)
06-01 11:15:42.555: E/AndroidRuntime(28377): at com.part66online.MainActivity.onClick(MainActivity.java:44)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.view.View.performClick(View.java:4204)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.view.View$PerformClick.run(View.java:17355)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.os.Handler.handleCallback(Handler.java:725)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.os.Handler.dispatchMessage(Handler.java:92)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.os.Looper.loop(Looper.java:137)
06-01 11:15:42.555: E/AndroidRuntime(28377): at android.app.ActivityThread.main(ActivityThread.java:5041)
06-01 11:15:42.555: E/AndroidRuntime(28377): at java.lang.reflect.Method.invokeNative(Native Method)
06-01 11:15:42.555: E/AndroidRuntime(28377): at java.lang.reflect.Method.invoke(Method.java:511)
06-01 11:15:42.555: E/AndroidRuntime(28377): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-01 11:15:42.555: E/AndroidRuntime(28377): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-01 11:15:42.555: E/AndroidRuntime(28377): at dalvik.system.NativeStart.main(Native Method)
Re: Доступ к интернету
куда уж более явно. Щелкни два раза на строчке с нуллпоинтерэксепшн - перекинет на строку, где ошибка.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Доступ к интернету
Да, точно, спасибо за подсказку. 
Ругается на эту строку: test_field.setText("Connecting...");
Не понимаю, все сделанно аналогично уроку http://startandroid.ru/ru/uroki/vse-uro ... rimer.html
--------------------------------
АП. Разобрался с перемеными, теперь все работает, доступ к интернету есть, авторизация выполняется. Спасибо всем за содействие. Скоро буду мучать вас дальше.
Ругается на эту строку: test_field.setText("Connecting...");
Не понимаю, все сделанно аналогично уроку http://startandroid.ru/ru/uroki/vse-uro ... rimer.html
--------------------------------
АП. Разобрался с перемеными, теперь все работает, доступ к интернету есть, авторизация выполняется. Спасибо всем за содействие. Скоро буду мучать вас дальше.
