Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: При нажатии на кнопку на клавиатуре курсор перемещается вверх

Здравствуйте. Пытаюсь решить следующую задачку на андроид студио. выделяю строку в таблицы и удаляю количество. Потом записываю другое значение, при использовании экранной клавиатуры все супер но при использовании физической клавиатуры если я в нижней строке то меня переводит в первую строчку. Ни как ни пойму где здесь подлог.
Ответ: Ну да он самый

Добавлено через 5 минут
Пока пишу программное обеспечение. В планах в первой половине следующего месяца будем использовать
Вопрос: Сворачивание приложения при нажатии кнопки "Назад"

Как сделать, чтобы при нажатии кнопки "назад" приложение не закрывалось, а сворачивалось?
Ответ:
Сообщение от Nerr
Как сделать, чтобы при нажатии кнопки "назад" приложение не закрывалось, а сворачивалось?
а оно и не закрывается - полюбуйтесь на него в разделе приложения - там будет написано "работает"
Вопрос: Выключение экрана по нажатию кнопки

Необходимо выключить экран по нажатию кнопки.
Пробовал KeyguardManager, но метод KeyguardLock зачеркивается в android studio.
Пробовал DevicePolicyManager, но метод .lockNow() привел к аварийном завершению программы.
И еще много чего...
Короче говоря, помогите чем может....
Ответ: Вот, что я прописал в манифесте:
XML
1
2
3
4
5
    xmlns:tools="http://schemas.android.com/tools"    
    <uses-sdk tools:overrideLibrary="com.google.android.gms.all,com.google.android.gms.ads,com.google.android.gms,com.google.android.gms.analytics,com.google.android.gms.appindexing,com.google.android.gms.base,com.google.android.gms.measurement,com.google.android.gms.vision,com.google.android.gms.appinvite,com.google.android.gms.appstate,com.google.android.gms.cast,com.google.android.gms.drive,com.google.android.gms.fitness,com.google.android.gms.location,com.google.android.gms.maps,com.google.android.gms.games,         com.google.android.gms.gcm,com.google.android.gms.identity,com.google.android.gms.nearby,com.google.android.gms.panorama,         com.google.android.gms.plus,com.google.android.gms.safetynet,com.google.android.gms.wallet,com.google.android.gms.wearable" />
 
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
Вот мо код:
Java
1
2
3
4
5
    public static DevicePolicyManager DPM;
    public void Click (View view) {
        DPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
            DPM.lockNow();
    }
При нажатии на кнопку приложение выдает сообщение: "К сожалению, приложение остановилось"
Вопрос: Переключение между Activity путём нажатия кнопки

работаю в eclips. создал два файла, в папку res\layout\activity_second.xml и activity_second2.xml потом классы посредством кторых будет отражено новое Activity SecondActivity.java и SecondActivity2.java

есть переключение между Activity путём нажатия кнопки созданы нужные классы и все прочее, прописан манифест в итоге имеем активити 1 с двумя кнопками на активити 2 и активити 3 ... но при нажатии на любую он перекидывает на активити 2(SecondActivity). Независимо от нажатия на кнопку 1 или кнопку 2 он открывает тока одно и тоже окно (SecondActivity). вот код MainActivity.java
Java(TM) 2 Platform Standard Edition 5.0
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
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    Button swith = (Button)findViewById(R.id.button1);
    Button swith3 = (Button)findViewById(R.id.button3);
 
    swith.setOnClickListener(new OnClickListener()
 
                    {
                    @Override
        public void onClick(View v) {
 
            startActivity(new Intent(MainActivity.this, SecondActivity.class)); 
                                       }
    });
 
 
    swith3.setOnClickListener(new View.OnClickListener() {    
         @Override
         public void onClick(View v) {
             startActivity(new Intent(MainActivity.this, SecondActivity2.class));
         }
     });    
}
 
 
 
@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;
}
 
}





Может быть в манифесте напортачил???

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
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />
 
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
 
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="SecondActivity"
        android:label="@string/app_name"/>
    <activity
        android:name="SecondActivity2"
        android:label="@string/app_name"/>
 
</application>
файлы навсякий случай прикреплю
Ответ: консультация. у меня список берет информацию из папки raw при создании второго списка хотел ему показать брать файлы из другой папки.. к примеру waw но он ругается на меня... Description Resource Path Location Type invalid resource directory name waw /carcar/res line 1 Android AAPT Problem Почему ?

Добавлено через 15 минут
Сообщение от aivengos
консультация. у меня список берет информацию из папки raw при создании второго списка хотел ему показать брать файлы из другой папки.. к примеру waw но он ругается на меня... Description Resource Path Location Type invalid resource directory name waw /carcar/res line 1 Android AAPT Problem Почему ?
разобрался..
Вопрос: Отслеживание нажатия кнопки

В приложении присутствует две кнопки и один долгий цикл. Нужно ли отслеживать нажатие кнопки при выполнении цикла или андроид сам прервет цикл для обработки нажатия. И достаточно ли будет такого кода, чтобы остановить цикл при нажатии.
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
public void onClick(View v) {
    break;
}
Ответ: ooWhileRoo, "долгий цикл" нужно выносить из UI потока или приложение будет висеть пока цикл не завершится.
Вопрос: Вывод изображения после нажатия кнопки

Можно ли вывести изображение на главный layout, после нажатия кнопки, которая расположена на нём?

По нажатию первой кнопки должно появиться некое image1, а по нажатию второй - image2 вместе image 1. Нужно создавать разные layout или можно на одном вызывать только фрагменты с этими изображениями?
Далее код main.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
34
35
36
37
38
39
40
41
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:weightSum="1">
    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
 
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="По заданию" />
 
        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Барсик" />
 
        <Button
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Мурзик" />
 
    </LinearLayout>
 
</LinearLayout>


И код mainactivity.java :
Кликните здесь для просмотра всего текста
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
package ru.startandroid.myapplication;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
 
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Fragment frag2 = new Fragment2();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(R.id.fragment2, frag2);
        ft.commit();
    };
 
    public void sendImage (View view){
 
    }
}
Ответ: imageview.setImageResource(R.drawable.batman);
Вопрос: GMailSender+JSSEProvider, отправка письма на почту по нажатию кнопки

Доброе утро. Решил спросить в новой теме по данной связке. Есть активити, в ней несколько полей. Хочу по нажатию кнопки отправлять данные с этих полей ко мне на почту Gmail. Вычитал , что можно реализовать данный метод. Кто реализовывал данный метод подскажите что я не так сделал и почему по нажатию кнопки данные с полей не уходят на почту?
Файлы библиотек я добавил в свой проект, дальше просто сделал активити, добавил туда поля и кнопки. Содержимое .java и .xml ниже. Визуально можно посмотреть как на миниатюре.

1. Создал активити, в нем следующее содержимое:
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
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
<?xml version="1.0" encoding="utf-8"?>
 
 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/connect"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="ru.lux_tv.screen.ConnectActivity">
 
<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView
        android:text="@string/formaConn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/textView3" />
 
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="Введите ФИО"
        android:ems="10"
        android:layout_below="@+id/textView3"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="52dp"
        android:id="@+id/poleFio"/>
 
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:hint="Введите номер телефона"
        android:layout_marginTop="22dp"
        android:id="@+id/poleTel"
        android:layout_below="@+id/poleFio"
        android:layout_alignParentStart="true"/>
 
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:hint="Введите сообщение"
        android:id="@+id/poleSoob"
        android:lines="5"
        android:layout_below="@+id/poleTel"
        android:layout_alignParentStart="true"
        android:layout_marginTop="18dp"/>
 
    <Button
        android:text="Отправить заявку"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnConSend"
        android:layout_below="@+id/poleSoob"
        android:layout_alignParentStart="true"
        android:layout_marginTop="18dp" />
 
    <Button
        android:text="Очистить форму"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnConClear"
        android:layout_alignBaseline="@+id/btnConSend"
        android:layout_alignBottom="@+id/btnConSend"
        android:layout_alignParentEnd="true" />
</RelativeLayout>
</ScrollView>
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
package ru.lux_tv.screen;
 
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.content.Intent;
import android.view.MenuItem;
import android.util.Log;
 
 
import com.backendless.Backendless;
 
public class ConnectActivity extends AppCompatActivity implements View.OnClickListener {
 
    public static final String APP_ID = "--------------------------------------------";
    public static final String SECRET_KEY = "----------------------------------------";
    public static final String VERSION = "v1";
 
    private Button btnConSend;
    private Button btnConClear;
 
    private EditText poleFio;
    private EditText poleTel;
    private EditText poleSoob;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.connect);
 
        Backendless.initApp(this, APP_ID, SECRET_KEY, VERSION);
 
        ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        //btnConSend = (Button) findViewById(R.id.btnConSend);
        //btnConSend.setOnClickListener(this);
 
        btnConSend = (Button) this.findViewById(R.id.btnConSend);
        btnConSend.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View v) {
 
                try {
                    GMailSender sender = new GMailSender("luxtvapps@gmail.com", "blablabla");
                    sender.sendMail("This is Subject",
                            "This is Body",
                            "luxtvapps@gmail.com",
                            "user@yahoo.com");
                } catch (Exception e) {
                    Log.e("SendMail", e.getMessage(), e);
                }
 
            }
        });
 
        btnConClear = (Button) findViewById(R.id.btnConClear);
        btnConClear.setOnClickListener(this);
 
        poleFio = (EditText) findViewById(R.id.poleFio);
        poleTel = (EditText) findViewById(R.id.poleTel);
        poleSoob = (EditText) findViewById(R.id.poleSoob);
 
    }
 
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnConClear:
                poleFio.setText("");
                poleTel.setText("");
                poleSoob.setText("");
                break;
        }
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                startActivity(new Intent(this, MainActivity.class));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
 
}
2. GMailSender.java
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
package ru.lux_tv.screen;
 
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Security;
import java.util.Properties;
 
 
public class GMailSender extends javax.mail.Authenticator {
    private String mailhost = "smtp.gmail.com";
    private String user;
    private String password;
    private Session session;
 
    static {
        Security.addProvider(new com.provider.JSSEProvider());
    }
 
    public GMailSender(String user, String password) {
        this.user = user;
        this.password = password;
 
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", mailhost);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.quitwait", "false");
 
        session = Session.getDefaultInstance(props, this);
    }
 
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user, password);
    }
 
    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
        try{
            MimeMessage message = new MimeMessage(session);
            DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
            message.setSender(new InternetAddress(sender));
            message.setSubject(subject);
            message.setDataHandler(handler);
            if (recipients.indexOf(',') > 0)
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
            else
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
            Transport.send(message);
        }catch(Exception e){
 
        }
    }
 
    public class ByteArrayDataSource implements DataSource {
        private byte[] data;
        private String type;
 
        public ByteArrayDataSource(byte[] data, String type) {
            super();
            this.data = data;
            this.type = type;
        }
 
        public ByteArrayDataSource(byte[] data) {
            super();
            this.data = data;
        }
 
        public void setType(String type) {
            this.type = type;
        }
 
        public String getContentType() {
            if (type == null)
                return "application/octet-stream";
            else
                return type;
        }
 
        public InputStream getInputStream() throws IOException {
            return new ByteArrayInputStream(data);
        }
 
        public String getName() {
            return "ByteArrayDataSource";
        }
 
        public OutputStream getOutputStream() throws IOException {
            throw new IOException("Not Supported");
        }
    }
}

3. JSSEProvider.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.provider;
 
import java.security.AccessController;
import java.security.Provider;
 
public final class JSSEProvider extends Provider {
 
    public JSSEProvider() {
        super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
        AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() {
            public Void run() {
                put("SSLContext.TLS",
                        "org.apache.harmony.xnet.provider.jsse.SSLContextImpl");
                put("Alg.Alias.SSLContext.TLSv1", "TLS");
                put("KeyManagerFactory.X509",
                        "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");
                put("TrustManagerFactory.X509",
                        "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");
                return null;
            }
        });
    }
}
4. В манифест добавил
XML
1
2
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ответ: При проверке на телефоне вылетает с ошибкой :-(
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
package ru.lux_tv.screen;
 
import android.os.AsyncTask;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.content.Intent;
import android.view.MenuItem;
import android.util.Log;
 
 
 
 
public class ConnectActivity extends AppCompatActivity implements View.OnClickListener {
 
 
    private Button btnConSend;
    private Button btnConClear;
 
    private EditText poleFio;
    private EditText poleTel;
    private EditText poleSoob;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.connect);
 
        //Backendless.initApp(this, APP_ID, SECRET_KEY, VERSION);
 
        ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
 
        //btnConSend = (Button) findViewById(R.id.btnConSend);
        //btnConSend.setOnClickListener(this);
 
        final Button send = (Button) this.findViewById(R.id.btnConSend);
        btnConSend.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View v) {
                MyTask task = new MyTask();
                task.execute();
 
                private class MyTask extends AsyncTask<Void, Void, Void> {
                    @Override
                    protected Void doInBackground(Void... voids) {
                        try {
                            GMailSender sender = new GMailSender("luxtvapps@gmail.com", "123");
                            sender.sendMail("This is Subject",
                                    "This is Body",
                                    "luxtvapps@gmail.com",
                                    "luxtvapps@gmail.com");
                            Log.e("SendMail","Mail send");
                        } catch (Exception e) {
                            Log.e("SendMail", e.getMessage(), e);
                        }
                        return null;
                    }
                }
            }
 
        });
 
        btnConClear = (Button) findViewById(R.id.btnConClear);
        btnConClear.setOnClickListener(this);
 
        poleFio = (EditText) findViewById(R.id.poleFio);
        poleTel = (EditText) findViewById(R.id.poleTel);
        poleSoob = (EditText) findViewById(R.id.poleSoob);
 
    }
 
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnConClear:
                poleFio.setText("");
                poleTel.setText("");
                poleSoob.setText("");
                break;
        }
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                startActivity(new Intent(this, MainActivity.class));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
 
}
Добавлено через 56 секунд
Сообщение от fraley
Так достаточно:
Java
Выделить код
1
2
3
static {
Security.addProvider(new JSSEProvider());
}
Помогло, спасибо!

Добавлено через 19 часов 40 минут
Короче говоря, сделал! Может кому пригодится, кто из начинающих захочет подобное реализовать. Все strings и данные авторизации подгоните под себя.
Вопрос: Переход на нужный фрагмент по нажатию кнопки назад

Здравствуйте, у меня есть 2 фрагмента со списком ListFragment (выбираю категорию и подкатегорию) и еще другие информационные фрагменты, на которые я перехожу с подкатегории ListFragment-а с помощью onListItemClick. Мне нужно чтобы при нажатии на кнопку "назад" я возвращался не по стеку всех открытых фрагментов, а строго так: Категория ← подкатегория ← инфо-Фрагмент. Пробовал ловить с onBackPressed, но не получается, может что-то не так делал. Подскажите как это реализовать, желательно с кодом. Заранее спасибо!!!
Ответ: Да нашел решение. У меня несколько типов фрагментов (где-то 10) и для каждого типа где то 10 фрагментов. Я создал для каждого типа фрагмента свою переменную boolean которая обозначает какой тип фрагмента активен.

Вот эти переменные:
Java
1
2
3
4
5
6
7
8
9
10
    public static boolean firstListFrag;
    public static boolean algebraFormulFrag;
    public static boolean geometryFormulFrag;
    public static boolean trigeometryFormulFrag;
    public static boolean physicalFormulFrag;
    public static boolean himicalFormulFrag;
    public static boolean himicalTablFrag;
    public static boolean physicalTablFrag;
    public static boolean algebraTablFrag;
    public static boolean trigonometryTablFrag;
Затем когда я открываю фрагмент, я там отмечаю что он работает в нужной переменной, а когда выхожу ставлю снова false. Получилось вот так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
    public void onResume() {
        super.onResume();
        MainActivity.himicalTablFrag = true;
        getActivity().setTitle("Периодическая таблица химических элементов Д. И. Менделеева");
    }
 
    @Override
    public void onPause() {
        super.onPause();
        MainActivity.himicalTablFrag = false;
    }
И так в каждом фрагменте.
А вот в MainActivity в onBackPressed я по этим переменным проверяю какой фрагмент был открыт во время нажатия кнопки назад я заменяю фрагмент с помощью replace(). Вот так:

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
@Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else if (firstListFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new MainFragment();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(algebraFormulFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new AlgebraFragment();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(geometryFormulFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new GeometryFragment();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(trigeometryFormulFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new TrigonometryFragment();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(physicalFormulFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new PhysicalFragment();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(himicalFormulFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new HimicalFragment();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(himicalTablFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new HimicalTema_11();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(physicalTablFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new PhysicalTema_23();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(algebraTablFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new AlgebraTema_10();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if(trigonometryTablFrag){
            Fragment fragment;
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 
            fragment = new TrigonometryTema_10();
            transaction.replace(R.id.container, fragment);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
            transaction.commit();
        } else if((!drawer.isDrawerOpen(GravityCompat.START)) && (MainFragment.fragmentShow)){
            alertDialog.show();
        } else {
            super.onBackPressed();
        }
    }
Для каждого типа фрагмента своя замена на нужный фрагмент. Все работает без багов! Пока что это я сделал для своей версии приложения в play маркете, но пока не обновил. Если интересно как это работает могу дать тестовый apk.
Вопрос: Как изменить ссылку по нажатию кнопки?

Кто подскажет, как тут, по нажатию кнопки менять ссылки?
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
URL feedUrl = null;        
 try {             
feedUrl = new URL("http://urbanside.ru/rss.xml");     
    }
Сам код целиком
Код Java(TM) 2 Platform Standard Edition 5.0
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
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 {
 
    protected InputStream getInputStream() {
        URL feedUrl = null;
        try {
            feedUrl = new URL("http://urbanside.ru/rss.xml");
        } 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("creator").setEndTextElementListener(
                new EndTextElementListener() {
                    @Override
                    public void end(String body) {
                        currentPost.creator = 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;
    }
}
Ответ: Спасибо за помощь всем)Но я так и не смог это сделать)Видимо придется нанимать кого-то...
Вопрос: В созданном браузере при нажатии кнопки "Назад" выходит из приложения

Всем привет!

Недавно начал изучать как разрабатывать приложения под Android.
Хочу написать браузер для Android специально для одного сайта, без адресной строки.
Все вроде бы сделал, но при нажатии кнопки "Назад", приложение закрывается, а нужно, чтобы переходило на предыдущую страницу.

Что делать? Как выйти из ситуации?

activity_main.xml
Код XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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"
    tools:context=".MainActivity">
 
 
 
    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"
        android:layout_alignParentTop="true" />
 
</RelativeLayout>
MainActivity.java
Код Java(TM) 2 Platform Standard Edition 5.0
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
package com.example.student.myapplication;
 
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
 
public class MainActivity extends Activity {
    WebView webView = null;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
        getActionBar().hide();
 
 
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
        webView = (WebView) findViewById(R.id.webView);
 
        webView.setWebViewClient(new WebViewClient() {
                                     @Override
                                     public boolean shouldOverrideUrlLoading(WebView view, String url) {
                                         view.loadUrl(url);
                                         return true;
                                     }
                                 }
        );
 
 
        webView.getSettings().setJavaScriptEnabled(true);
 
        webView.loadUrl("http://yandex.ru");
 
    }
 
}
AndroidManifest.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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.student.myapplication" >
 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="Приложение"
 
         >
        <activity
            android:name=".MainActivity"
            android:label="Приложение">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
Ответ:
Сообщение от nar_aliakbarov
Она убирает адресную строку
Нинада, у меня нет ее и так.