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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
#1

Как передать ссылку через Intent - Программирование Android

09.05.2015, 14:55. Просмотров 468. Ответов 4
Метки нет (Все метки)

Как можно в такой класс


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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package app.kray.anddev;
 
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
 
import android.sax.Element;
import android.sax.EndElementListener;
import android.sax.EndTextElementListener;
import android.sax.RootElement;
import android.util.Xml;
 
 
public class NewParser {
 
 
    public static String url = "http://urbanside.ru/info.xml";
 
 
    protected InputStream getInputStream() {
        URL feedUrl = null;
        try {
            feedUrl = new URL(url); /*приемник ссылки*/
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
            feedUrl = null;
        }
        try {
            return feedUrl.openConnection().getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
 
    public ArrayList<PostItem> parse() {
        final PostItem currentPost = new PostItem();
        final ArrayList<PostItem> messages = new ArrayList<PostItem>();
        RootElement root = new RootElement("rss");
        Element channel = root.getChild("channel");
        Element item = channel.getChild("item");
        item.setEndElementListener(new EndElementListener() {
            @Override
            public void end() {
                messages.add(currentPost.copy());
            }
        });
        item.getChild("title").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.title = body;
                    }
                });
        item.getChild("link").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.link = body;
                    }
                });
        item.getChild("description").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.description = body;
                    }
                });
        item.getChild("pubDate").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.setDate(body);
                    }
                });
        item.getChild("img").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.img = body;
                    }
                });
        item.getChild("Security").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.Security = body;
                    }
                });
        item.getChild("Condition").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.Condition = body;
                    }
                });
        try {
            Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8,
                    root.getContentHandler());
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return messages;
    }
}
Передать из другого класса по обработке данного события

Java
1
2
3
4
5
6
7
8
9
    public void onClick(View v) {
    switch(v.getId()) { 
    case R.id.info: 
    url = "http://urbanside.ru/info.xml"; 
    break; 
    case R.id.plans: 
    url = "http://urbanside.ru/plans.xml";
    break; 
    }
И реально ли это сделать через Intent?
Суть вопроса,в том,что приложение RSS Reader по умолчанию парсит сначала ссылку public static String url = "http://urbanside.ru/info.xml"; но в случае клика в меню,оно начинает парсить ту ссылку что указана в обработчике.
Если нужны будут исходники,могу скинуть...Помогите пожалуйста?)Ибо нужно срочно закончить проект...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2015, 14:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передать ссылку через Intent (Программирование Android):

Передать ссылку на класс через Intent - Программирование Android
Возможно ли подобное? Есть класс, в котором храню больше 50 параметров разного типа (количество переменных все еще растет). Эти...

Как передать через intent нажатие кнопки в другом активити - Программирование Android
В первом активити у нас есть две кнопки 1 и 2. Во втором активити ещё две кнопки 3 и 4. Вопрос в том, как сделать так, чтоб при нажатии...

Передать через intent VIEW - Программирование Android
Как можно через intent передать &quot;VIEW&quot;, полученное вот таким способом: View view = (View)findViewById(R.id.layout_linear); Передавая...

Передать через Intent информацию об Item - Программирование Android
Выводит ошибку и приложение закрывается by Force Close ошибка по ходу в Intente package kg.aykut.speak_kyrgyz; import...

Передать через intent ArrayList объектов своего класса - Программирование Android
У меня есть ArrayList из обьектов моего класса. Мне нужно передать это через intent в другое активити. Значит мой класс должен...

Пытаюсь передать данные через Intent, но выходит ошибка - Программирование Android
Пытаюсь передать данные через Intent, но выходит ошибка, когда пытаюсь передать число Вот, что выводит в Логе 03-02...

4
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,921
Завершенные тесты: 1
09.05.2015, 15:39 #2
Связь между Activity
1
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
09.05.2015, 16:13  [ТС] #3
Хмм,в таком случае,мне придется как то в стринг информацию писать?)
Я просто долго с этим вожусь но в андроид новичек,не могу понять этого)
0
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,921
Завершенные тесты: 1
09.05.2015, 16:57 #4
Цитата Сообщение от Nasdomlan Посмотреть сообщение
в таком случае,мне придется как то в стринг информацию писать
А что смущает?

в первой активити ложим ссылку в виде строки
Java
1
2
3
4
5
6
7
8
9
        URL url = null;
        String str = "http://urbanside.ru/info.xml";
        try {
            url = new URL(str);
        } catch (MalformedURLException e) {
        }
        Intent intent = new Intent(MainActivity.this, MainActivity2.class);
        intent.putExtra("myCoolUrl", url.toString());
        startActivity(intent);
во второй активити достаем и делаем url
Java
1
2
3
4
5
6
7
        Intent intent = getIntent();
        String str = intent.getExtras().getString("myCoolUrl");
        URL url = null;
        try {
            url = new URL(str);
        } catch (MalformedURLException e) {
        }
1
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
09.05.2015, 19:28  [ТС] #5
Хмм,дело вот в чем.Есть main класс,есть parser класс,в main класс,я хочу по клику менять ссылку которую парсит parser класс...
Делать это пытаюсь через такую схему
Тут кнопки прописал...
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/vk_group" android:title="@string/vk_group"/>
    <item android:id="@+id/Security" android:title="@string/Security"/>
    <item android:id="@+id/AlertDialog" android:title="@string/about"/>
    <item android:id="@+id/info" android:title="@string/info"/>
    <item android:id="@+id/plans" android:title="@string/plans"/>
    <item android:id="@+id/mThemes" android:title="@string/menu_theme">
        <menu>
        <group 
            android:checkableBehavior="single"
            android:visible="true" 
            android:id="@+id/mThemesGroup">
            <item 
                android:id="@+id/mThemesDefault" android:title="@string/menu_default_name"/>
            <item 
                android:id="@+id/mThemesDark" android:title="@string/menu_dark_name"/>
        </group>
        </menu>
    </item>
</menu>
Так пытаюсь обработать их клик
Java
1
2
3
4
5
6
7
8
9
    public void onClick(View v) {
    switch(v.getId()) { 
    case R.id.info: 
    url = "http://urbanside.ru/info.xml"; 
    break; 
    case R.id.plans: 
    url = "http://urbanside.ru/plans.xml";
    break; 
    }
Сам класс,полный.
Кликните здесь для просмотра всего текста
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
package app.kray.anddev;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
//import android.widget.Toast;
 
public class AnddevActivity extends ListActivity {  
 
    public final static String PREFERENCES_NAME = "preferences";
    public final static String PREFERENCES_THEME_ID = "theme";
    public final static int DEFAULT_THEME = R.style.DefaultTheme;
 
    private ArrayList<PostItem> messages;
    private PostAdapter adapter;
    private boolean themeChanged = false;
    private String url;
 
    @SuppressWarnings("unchecked")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTheme(this);
        setContentView(R.layout.main);
        if (!themeChanged) {
            final Object data = getLastNonConfigurationInstance();
            if (data == null) {
                new GetParserResult().execute();
            } else {
                messages = (ArrayList<PostItem>) data;
                adapter = new PostAdapter(AnddevActivity.this,
                        R.layout.post_entry, messages);
                setListAdapter(adapter);
            }
        } else
            themeChanged = false;
    }
  
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent postActivity = new Intent(this, PostActivity.class);
        Bundle store = new Bundle();
        store.putString("title", messages.get(position).title);
        store.putString("description", messages.get(position).description);
        store.putString("date", messages.get(position).date);
        store.putString("link", messages.get(position).link);
        store.putString("img", messages.get(position).img);
        store.putString("Security", messages.get(position).Security);
        postActivity.putExtras(store);
        startActivity(postActivity);
    }
    @Override
    public ArrayList<PostItem> onRetainNonConfigurationInstance() {
        return messages;
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        SharedPreferences sPreferences = getSharedPreferences(PREFERENCES_NAME,
                Context.MODE_PRIVATE);
        int themeID = sPreferences.getInt(PREFERENCES_THEME_ID, DEFAULT_THEME);
        switch (themeID) {
        case R.style.DarkTheme:
            menu.findItem(R.id.mThemesDark).setChecked(true);
            break;
        case DEFAULT_THEME:
            menu.findItem(R.id.mThemesDefault).setChecked(true);
            break;
        }
        return true;
    }   
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {     
        case R.id.vk_group:
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.vk.com/nasdomlan"));
            startActivity(browserIntent);
            return true;
 
        /*case R.id.vk_group:
            Toast.makeText(this, "Nasdomlan Urban3p Group", Toast.LENGTH_SHORT).show(); */
        case R.id.AlertDialog:
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(" ")
                    .setMessage("Наша группа занимается урбан туризмом. И мы рады любым новым лицам. Обещаем позитивный настрой и отдых.")
                    .setIcon(R.drawable.splash)
                    .setCancelable(false)
                    .setNegativeButton("Закрыть",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
            AlertDialog alert = builder.create();
            alert.show();
            return true;
        case R.id.Security:
            AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
            builder2.setTitle("Уровни охраны")
                    .setMessage("У1: Нет охраны\nУ2: Минимум охраны\nУ3: Обходы\nУ4: Стабильные обходы")
                    .setCancelable(false)
                    .setNegativeButton("Закрыть",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
            AlertDialog alert2 = builder2.create();
            alert2.show();
            return true;    
        case R.id.mThemesDefault:
            if (item.isChecked())
                item.setChecked(false);
            else {
                item.setChecked(true);
                getApplication().setTheme(DEFAULT_THEME);
                savePreferences(DEFAULT_THEME);
                themeChanged = true;
                onStop();
                onCreate(null);
            }
            return true;
        case R.id.mThemesDark:
            if (item.isChecked())
                item.setChecked(false);
            else {
                item.setChecked(true);
                getApplication().setTheme(R.style.DarkTheme);
                savePreferences(R.style.DarkTheme);
                themeChanged = true;
                onStop();
                onCreate(null);
            }
            
        default:
            return super.onOptionsItemSelected(item);
        }
    }
    public void onClick(View v) {
    switch(v.getId()) { 
    case R.id.info: 
    url = "http://urbanside.ru/info.xml"; 
    break; 
    case R.id.plans: 
    url = "http://urbanside.ru/plans.xml";
    break; 
    } 
    
     }
    private class GetParserResult extends
            AsyncTask<Context, Integer, ArrayList<PostItem>> {
        private ProgressDialog loadingDialog;
        private NewParser parser;
 
        @Override
        protected void onPreExecute() {
 
            parser = new NewParser();
            loadingDialog = ProgressDialog.show(AnddevActivity.this, "",
                    getString(R.string.progress_dialog_text), true);
        }
 
        @Override
        protected ArrayList<PostItem> doInBackground(Context... arg0) {
            return parser.parse();
        }
 
        @Override
        protected void onPostExecute(ArrayList<PostItem> result) {
            if (result == null) {
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        AnddevActivity.this);
                builder.setMessage(getString(R.string.alert_dialog_text))
                        .setCancelable(false)
                        .setPositiveButton("Ok",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int id) {
                                        loadingDialog.dismiss();
                                        dialog.cancel();
                                    }
                                });
                AlertDialog alert = builder.create();
                alert.show();
            } else {
                messages = result;
                adapter = new PostAdapter(AnddevActivity.this,
                        R.layout.post_entry, messages);
                setListAdapter(adapter);
                loadingDialog.dismiss();
            }
        }
    }
 
    private void savePreferences(Integer Theme) {
        SharedPreferences settings = getSharedPreferences(PREFERENCES_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putInt(PREFERENCES_THEME_ID, Theme);
        editor.commit();
    }
 
    public static void setTheme(Activity activity) {
        SharedPreferences sPreferences = activity.getSharedPreferences(
                PREFERENCES_NAME, Context.MODE_PRIVATE);
        int theme = sPreferences.getInt(PREFERENCES_THEME_ID, DEFAULT_THEME);
        activity.setTheme(theme);
    }
}

А так поймать в парсере
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package app.kray.anddev;
 
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
 
import android.sax.Element;
import android.sax.EndElementListener;
import android.sax.EndTextElementListener;
import android.sax.RootElement;
import android.util.Xml;
 
 
public class NewParser {
 
 
    public static String url = "http://urbanside.ru/info.xml";
 
    protected InputStream getInputStream() {
        URL feedUrl = null;
        try {
            feedUrl = new URL(url);
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
            feedUrl = null;
        }
        try {
            return feedUrl.openConnection().getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
 
    public ArrayList<PostItem> parse() {
        final PostItem currentPost = new PostItem();
        final ArrayList<PostItem> messages = new ArrayList<PostItem>();
        RootElement root = new RootElement("rss");
        Element channel = root.getChild("channel");
        Element item = channel.getChild("item");
        item.setEndElementListener(new EndElementListener() {
            @Override
            public void end() {
                messages.add(currentPost.copy());
            }
        });
        item.getChild("title").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.title = body;
                    }
                });
        item.getChild("link").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.link = body;
                    }
                });
        item.getChild("description").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.description = body;
                    }
                });
        item.getChild("pubDate").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.setDate(body);
                    }
                });
        item.getChild("img").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.img = body;
                    }
                });
        item.getChild("Security").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.Security = body;
                    }
                });
        item.getChild("Condition").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.Condition = body;
                    }
                });
        try {
            Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8,
                    root.getContentHandler());
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return messages;
    }
}
Знаю что 1000% что код не верный,вот прошу помощи как заставить его работать?
И как можно сделать кнопки,и их обработку в таком виде
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
    <item android:id="@+id/mThemes" android:title="@string/menu_theme">
        <menu>
        <group 
            android:checkableBehavior="single"
            android:visible="true" 
            android:id="@+id/mThemesGroup">
            <item 
                android:id="@+id/mThemesDefault" android:title="@string/menu_default_name"/>
            <item 
                android:id="@+id/mThemesDark" android:title="@string/menu_dark_name"/>
        </group>
        </menu>
    </item>
0
09.05.2015, 19:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2015, 19:28
Привет! Вот еще темы с ответами:

Как передать intent данные в Service? - Программирование Android
Здравствуйте! как передать intent данные в класс с расширением Service? Стандартным способом кажется не получится передать через putextra...

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] - Программирование Android
Выдает такую ошибку, хотя смартфон видит, он разрешает отладку, при запуске выдает такое сообщение, на самом экране смартфона при заходе в...

Передать адаптер в Intent - Программирование Android
Как это сделать??? Создал свой адаптер (My_adapter) для списка цветных строк и пытаюсь избавится от всех мест где раньше использовал...

Starting: Intent { act=android.intent.action.MAIN. и пустой белый экран - Программирование Android
При запуске приложения всё заканчивается на Starting: Intent { act=android.intent.action.MAIN cat= cmp=com.example.lab2/.MainActivity } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru