Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android FATAL EXCEPTION: main http://www.cyberforum.ru/android-dev/thread1392856.html
Всем привет. Не получается программка из урока с передачей данных из одного активити в другое. Уже третий день туплю, но не могу исправить ошибку... <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"...
Программирование Android Вызов метода перед завершением работы приложения Вопрос такой, есть ли какой-нибудь метод, который можно перегрузить и который будет вызываться перед закрытием программы ? (например для сохранения информации о состоянии приложения в файл и т.п.) http://www.cyberforum.ru/android-dev/thread1392828.html
Программирование Android Не показывать активити при загрузке Android
Всем доброго времени дня. Есть активити в ней запускается сервис. В манифесте прописан класс для обработки загрузки: <receiver android:name=".OnBootReceiver" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>сам класс: public...
Программирование Android Не удается создать mediaplayer
Пишу на android studio, приложение запускается все нормально. Но в отладке пишет, Unable to to create media player В чем проблема? Помогите пожалуйста public class MainActivity extends Activity implements OnPreparedListener, OnCompletionListener { //final String DATA_HTTP = "http://aska.ru-hoster.com:2199/tunein/oceanbeats.pls"; final String DATA_HTTP =...
Программирование Android Библиотека retrofit http://www.cyberforum.ru/android-dev/thread1392669.html
Хотелось бы посмотреть реализацию установки интернет соединения через ретрофит на готовом проекте. Интересует момент, данная либа использует Интерфейс, в котором содержаться несколько запросов. Здесь не понятно, чтобы использовать методы запроса нужно имплементить этот интерфейс во всех классах везде, где необходимо воспользоваться этими самыми методами запроса. Соответственно придется...
Программирование Android Не запускается проект Нужна помощь, только начинаю работать в Андроид Студии и понятия не имею что нужно сделать в моей ситуации что, бы заработало. После создания проекта возникает ошибка рендеринга, при изменении версии андроида проблема остается. Дополнительно к этому возникает следующая ошибка: Error: (23, 13) Failed to resolve: com.android.support:appcompat-v7:22.+ <a href="install.m2.repo">Install... подробнее

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

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

11.03.2015, 22:19. Просмотров 352. Ответов 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. Не понятно почему....
Буду рад за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru