Форум программистов, компьютерный форум, киберфорум
Наши страницы

Cпрятать компоненты в классе, который наследуется от DialogFragment - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android FATAL EXCEPTION: main http://www.cyberforum.ru/android-dev/thread1392856.html
Всем привет. Не получается программка из урока с передачей данных из одного активити в другое. Уже третий день туплю, но не могу исправить ошибку... <RelativeLayout...
Программирование Android Вызов метода перед завершением работы приложения Вопрос такой, есть ли какой-нибудь метод, который можно перегрузить и который будет вызываться перед закрытием программы ? (например для сохранения информации о состоянии приложения в файл и т.п.) http://www.cyberforum.ru/android-dev/thread1392828.html
Программирование Android Не показывать активити при загрузке Android
Всем доброго времени дня. Есть активити в ней запускается сервис. В манифесте прописан класс для обработки загрузки: <receiver android:name=".OnBootReceiver" android:enabled="true"...
Программирование Android Не удается создать mediaplayer
Пишу на android studio, приложение запускается все нормально. Но в отладке пишет, Unable to to create media player В чем проблема? Помогите пожалуйста public class MainActivity extends Activity...
Программирование Android Библиотека retrofit http://www.cyberforum.ru/android-dev/thread1392669.html
Хотелось бы посмотреть реализацию установки интернет соединения через ретрофит на готовом проекте. Интересует момент, данная либа использует Интерфейс, в котором содержаться несколько запросов. Здесь...
Программирование Android Не запускается проект Нужна помощь, только начинаю работать в Андроид Студии и понятия не имею что нужно сделать в моей ситуации что, бы заработало. После создания проекта возникает ошибка рендеринга, при изменении версии... подробнее

Показать сообщение отдельно
syslik
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38

Cпрятать компоненты в классе, который наследуется от DialogFragment - Программирование Android

11.03.2015, 22:19. Просмотров 382. Ответов 4
Метки (Все метки)

Доброго времени суток. Столкнулся с проблемой, что не могу спрятать компоненты в классе который наследуеться от DialogFragment.

Суть програмы следующая. После старта програмы должно открываться диалоговое окно с прогресом отвечающего за соединение с сервером. Если соединение успешно - диалог закрывается, иначе прогрес прячется, а вместо него появляется кнопка Try again. Не работает как раз setVisibility компонентов диалога.
Ниже предоставлен основной листинг кода.

Главная активность, где connectionFailure не работает как нужно:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Pult extends Activity implements ICommunication {
    private String host;
    private int port;
 
    RemoteController rc;
    ProgressDialog connectionDialog;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pult);
   
        host = ...;// загрузка из конфига
        port = ...;// загрузка из конфига
 
        rc = new RemoteController(host, port);
        rc.addListener(this);
 
        connectionDialog.setRemoteController(rc);
 
        showDialog();
    }
 
    void showDialog() {
        connectionDialog = ProgressDialog.newInstance();
        connectionDialog.show(getFragmentManager(), "dialog");
    }
 
    @Override
    public void connectionFailure() {
        if(connectionDialog != null) {
            connectionDialog .connectionFault();
        }
    }
....
}
Соединение с сервером.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class RemoteController extends AsyncTask<Void, Void, Void> implements Serializable {
 
    Socket socket;
    String dstAddress, response = "";
    int dstPort;
 
    List<ICommunication> listeners = new LinkedList<ICommunication>();
 
    RemoteController(String dstAddress, int dstPort) {
        this.dstAddress = dstAddress;
        this.dstPort = dstPort;
    }
 
    public void addListener(ICommunication c) {
        listeners.add(c);
    }
 
 @Override
    protected Void doInBackground(Void... arg0) {
        try {
            socket = new Socket(dstAddress, dstPort);
            ByteArrayOutputStream byteArrayOutputStream =
                    new ByteArrayOutputStream(1024);
            byte[] buffer = new byte[1024];
 
            int bytesRead;
            InputStream inputStream = socket.getInputStream();
 
            fireConnectionSuccess();
           
            while ((bytesRead = inputStream.read(buffer)) != -1){
                byteArrayOutputStream.write(buffer, 0, bytesRead);
                response += byteArrayOutputStream.toString("UTF-8");
                 .....
            }
        } catch (UnknownHostException e) {
        } catch (IOException e) {
            if(socket == null) {
                fireConnectionFailure();
            }
        } finally {
            if(socket != null){
                try {
                    socket.close();
                } catch (IOException e) {
                }
            }
        }
 
        return null;
    }
 
   private void fireConnectionSuccess() {
        for(ICommunication item: listeners) {
            item.connectionSuccess();
        }
    }
 
    private void fireConnectionFailure() {
        for(ICommunication item: listeners) {
            item.connectionFailure();
        }
}
И виновник торжества - диалоговое окно, setVisibility компонентов которого не работает.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class ProgressDialog extends DialogFragment {
    private TextView connectionTextView;
    private ProgressBar progressBar;
    private Button retryButton;
    private static RemoteController rc;
 
    public static ProgressDialog newInstance() {
        ProgressDialog dialog = new ProgressDialog();
        Bundle bundle = new Bundle();
        dialog.setArguments(bundle);
 
        return dialog;
    }
 
    public ProgressDialog() {
    }
 
    @Override
    public void onStart() {
        super.onStart();
        connectToSever();
    }
 
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Dialog dialog = super.onCreateDialog(savedInstanceState);
 
        Window window = dialog.getWindow();
        window.requestFeature(Window.FEATURE_NO_TITLE);
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        dialog.setCanceledOnTouchOutside(false);
 
        dialog.setContentView(R.layout.progress_dialog);
 
 
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.progress_dialog, null);
        connectionTextView = (TextView) view.findViewById(R.id.connection_text_view);
        progressBar = (ProgressBar) view.findViewById(R.id.progress_bar);
        retryButton = (Button) view.findViewById(R.id.retry_button);
 
        return dialog;
    }
 
    private static void connectToSever() {
        rc.execute();
    }
 
    public static void setRemoteController(RemoteController remoteController) {
        rc = remoteController;
    }
 
    public void connectionFault() { 
        //вот сдесь ничего не работает....
        connectionTextView.setVisibility(View.INVISIBLE);
        progressBar.setVisibility(View.INVISIBLE);
        retryButton.setVisibility(View.VISIBLE);
    }
 
    private void retryConnection() {
        //и сдесь.....
        connectionTextView.setVisibility(View.VISIBLE);
        progressBar.setVisibility(View.VISIBLE);
        retryButton.setVisibility(View.INVISIBLE);
 
        connectToSever();
    }
 
    public void close() {
        this.dismiss();
    }
}
И его в"юшка.
progress_dialog.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="30dp"
    android:background="@drawable/progress_dialog_bg">
 
    <TextView
        android:id="@+id/connection_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="@string/connection"
        />
    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progress_bar"
        android:layout_below="@+id/connection_text_view"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/progress_bar"
        android:text="@string/retry"
        android:id="@+id/retry_button"
        android:visibility="invisible"
        android:onClick="retryConnection"
        />
</RelativeLayout>
Еще почему-то очень долго ждать когда начнет выполняться doInBackground. Не понятно почему....
Буду рад за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.