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

Обновил android studio до 2.1, и наверно зря. Старый проект не получается открыть. Создаю эмулятор, запускаю, но окнo debugged не появляется, и в самом эмуляторе естественно не отображается мое приложение.

Есть такая надпись..
Migrate Project to Gradle?
This project does not use the Gradle build system. We recommend that you migrate to using the Gradle build system.

Что нужно сделать? Я так понял указать путь к gradle в моем старом проекте
Ответ:
Сообщение от илья9696
Обновить градл в студии можно?
Можно через студию, она сама скачивает тот градл, который указан. Можно вручную и положить в папку, но я не пробовал.
Вопрос: В шаблоне blank activity удалить полосу с названием

Подскажите, пожалуйста, я создал проект по шаблону Blank Activity, но возникла необходимость удалить верхнюю полосу(там где имя активности пишеться) Что удалить нужно из кода? Где находиться код ответственный за это?
Ответ: кошмар, почитай сначала
а полоса эта называется Toolbar или Actionbar, там не все так просто - в идеале надо поменять в манифесте или файле styles.xml тему на другую, в названии которой есть NoActionBar

потом надо вырезать минимум два метода (onCreateOptionsMenu и onPrepareOptionsMenu) из класса mainActivity

вариант выше проще, но мы как бы снимаем симптомы, но тулбар где-то остается
Вопрос: ViewPager (Tabbed activity) как добавить данные на сраницы?

Среда андройд студио.
"я создал" проект из коробки tabbed activity, автоматом создалось 2 xml, main отвечает за виджеты ,а второй за данные,поправьте меня,если не так что-то, на fragment _main я разместил свои данные,свайп в право работает и влево так же и вот что я хочу спросить: как мне добавить на второй,3,4 ит.д экраны другие данные?

Нашел в классе PlaceholderFragment такой код:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
 
          //тут нужно я так опнимаю обработчик и как-то добавить другие xml файлы
            return rootView;
        }


т.е я я создал в файле fragment_main разметку с данными и при свайпе вправо мне нужно показывать другие данные,а у меня получается,что они просто копируются

Ответ: может проще спросить:
как мне разную информацию разместить на каждой вкладке
Вопрос: TabHost, Activity, кнопка обновить на MainActivity

Здравствуйте!
Надеюсь вы мне поможете!
Структура программы:
MainActivity, сверху заголовок программы, два Item-а основного меню (обновить, настройки), TabHost.
При запуске в Tabhost создаются 2 вкладки и привязываются 2 класса как содержимое вкладок.
На первой кладке Listview (до второй еще не дошел), при создании вкладки Listview заполняется.
Заполняется через AsyncTask (запрос на сайт, парсинг JSON)...

Сейчас у меня стоит задача отработать кнопку обновления данных.

Т.е. у меня не получается обратиться к ListView-у из MainActivity (на нем расположена кнопка "Обновить" в main_menu), который расположен в другом activity на вкладке TabHost.

Возможно я изначально не правильно сделал архитектуру приложения. Конечно я могу сделать кнопку "обновить" для каждой вкладки по отдельности, но мне кажется это будет не красиво.

Подскажите правильный путь...

Вот MainActivity:

Код

package com.example.user.myapplication;

import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONArray;

import android.app.LocalActivityManager;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;

import java.io.InputStream;
import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;


public class MainActivity extends AppCompatActivity {

    public static String LOG_TAG = "my_log";
    private ArrayList<HashMap<String, Object>> mCatList;
    private static final String TITLE = "catname"; // Верхний текст
    private static final String DESCRIPTION = "description"; // ниже главного
    private static final String ICON = "icon";  // будущая картинка

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);





        TabHost tabHost = (TabHost) findViewById(R.id.tabHost);
        Log.d(LOG_TAG, "Setup");

        LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
        //setup(mLocalActivityManager);
        mLocalActivityManager.dispatchCreate(savedInstanceState);
        tabHost.setup(mLocalActivityManager);
        TabHost.TabSpec spec;
        Log.d(LOG_TAG, "TabSpec spec");
        spec = tabHost.newTabSpec("tag1");
        Log.d(LOG_TAG, "setContent");

        spec.setContent(new Intent(this,atmActivity.class));


        Log.d(LOG_TAG, "setIndicator");
        spec.setIndicator("TAB 1");
        Log.d(LOG_TAG, "addTab");
        tabHost.addTab(spec);

        Log.d(LOG_TAG, "TabSpec spec");
        spec = tabHost.newTabSpec("tag2");
        Log.d(LOG_TAG, "setContent");

        //spec.setContent(R.id.tab2);

        spec.setContent(new Intent(this,iptActivity.class));
        Log.d(LOG_TAG, "setIndicator");
        spec.setIndicator("TAB 2");
        Log.d(LOG_TAG, "addTab");
        tabHost.addTab(spec);

        tabHost.setCurrentTab(0);


       // new ParseTask().execute();
    }
        private class ParseTask extends AsyncTask<Void, Void, String> {

            HttpURLConnection urlConnection = null;
            BufferedReader reader = null;
            String resultJson = "";

            @Override
            protected String doInBackground(Void... params) {
                // получаем данные с внешнего ресурса
                try {
                    Log.d(LOG_TAG,"получаем данные с внешнего ресурса");
                    URL url = new URL("_Здесь URL, получаю JSON данные_");

                    urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("GET");
                    urlConnection.connect();

                    InputStream inputStream = urlConnection.getInputStream();
                    StringBuffer buffer = new StringBuffer();

                    reader = new BufferedReader(new InputStreamReader(inputStream));

                    String line;
                    while ((line = reader.readLine()) != null) {
                        buffer.append(line);
                    }
                    Log.d(LOG_TAG,"Получили данные");
                    resultJson = buffer.toString();

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return resultJson;
            }

            @Override
            protected void onPostExecute(String strJson) {
                super.onPostExecute(strJson);
                // выводим целиком полученную json-строку
                Log.d(LOG_TAG, strJson);

                JSONObject dataJsonObj = null;


                try {
                    dataJsonObj = new JSONObject(strJson);
                    JSONArray atms = dataJsonObj.getJSONArray("atm");

                    ListView iptlist = (ListView) findViewById(R.id.iptlist);

                    mCatList = new ArrayList<HashMap<String, Object>>();
                    HashMap<String, Object> hm;



                  
                    for (int i = 0; i < atms.length(); i++) {
                        JSONObject atm = atms.getJSONObject(i);

                        hm = new HashMap<>();
                        hm.put(TITLE, atm.getString("ATMID")+" "+atm.getString("Name")); // Название
                        hm.put(DESCRIPTION, atm.getString("datet")); // Описание

                        if (atm.getString("Status").equals("1")) {
                            hm.put(ICON, R.drawable.circle_green);}
                        else
                        {hm.put(ICON, R.drawable.circle_red);}// Картинка

                        mCatList.add(hm);

                        String Atmid = atm.getString("ATMID");
                        String Atmname = atm.getString("Name");
                        String Status = atm.getString("Status");
                        String Datet = atm.getString("datet");

                        Log.d(LOG_TAG, "atmid: " + Atmid);
                        Log.d(LOG_TAG, "atmname: " + Atmname);
                        Log.d(LOG_TAG, "Status: " + Status);
                        Log.d(LOG_TAG, "Datet: " + Datet);
                    }


                    Log.d(LOG_TAG, "SimpleAdapter");
                    SimpleAdapter adapter = new SimpleAdapter(
                            MainActivity.this,
                            mCatList,
                            R.layout.list_item,
                            new String[]{TITLE, DESCRIPTION, ICON},
                            new int[]{R.id.text1, R.id.text2, R.id.img});
                    iptlist.setAdapter(adapter);


                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }


    public void sayHello(View V) throws JSONException {
        Log.d(LOG_TAG,"Пробуем заполнить ListView");



    }

    public void showname(View V) {

        Toast.makeText(getApplicationContext(),
                "", Toast.LENGTH_LONG).show();

    }
    public void showpr(View V) throws JSONException {

    }





 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
     getMenuInflater().inflate(R.menu.menu_main, menu);
     return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1: {
                //Кнопка обновления
                Log.d(LOG_TAG,"Кнопка обновления");
                


ВОТ ТУТ не могу получить ListView, который находится на atmActivity
                





            }
                return true;

            case R.id.item2:
                Toast.makeText(getApplicationContext(),
                        "", Toast.LENGTH_LONG).show();
                return true;
        }


        return super.onOptionsItemSelected(item);
    }
}



 

Заранее спасибо!

Ответ:
Здравствуйте!
Надеюсь вы мне поможете!
Структура программы:
MainActivity, сверху заголовок программы, два Item-а основного меню (обновить, настройки), TabHost.
При запуске в Tabhost создаются 2 вкладки и привязываются 2 класса как содержимое вкладок.
На первой кладке Listview (до второй еще не дошел), при создании вкладки Listview заполняется.
Заполняется через AsyncTask (запрос на сайт, парсинг JSON)...

Сейчас у меня стоит задача отработать кнопку обновления данных.

Т.е. у меня не получается обратиться к ListView-у из MainActivity (на нем расположена кнопка "Обновить" в main_menu), который расположен в другом activity на вкладке TabHost.

Возможно я изначально не правильно сделал архитектуру приложения. Конечно я могу сделать кнопку "обновить" для каждой вкладки по отдельности, но мне кажется это будет не красиво.

Подскажите правильный путь...

Вот MainActivity:

Код

package com.example.user.myapplication;

import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONArray;

import android.app.LocalActivityManager;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;

import java.io.InputStream;
import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;


public class MainActivity extends AppCompatActivity {

    public static String LOG_TAG = "my_log";
    private ArrayList<HashMap<String, Object>> mCatList;
    private static final String TITLE = "catname"; // Верхний текст
    private static final String DESCRIPTION = "description"; // ниже главного
    private static final String ICON = "icon";  // будущая картинка

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);





        TabHost tabHost = (TabHost) findViewById(R.id.tabHost);
        Log.d(LOG_TAG, "Setup");

        LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
        //setup(mLocalActivityManager);
        mLocalActivityManager.dispatchCreate(savedInstanceState);
        tabHost.setup(mLocalActivityManager);
        TabHost.TabSpec spec;
        Log.d(LOG_TAG, "TabSpec spec");
        spec = tabHost.newTabSpec("tag1");
        Log.d(LOG_TAG, "setContent");

        spec.setContent(new Intent(this,atmActivity.class));


        Log.d(LOG_TAG, "setIndicator");
        spec.setIndicator("TAB 1");
        Log.d(LOG_TAG, "addTab");
        tabHost.addTab(spec);

        Log.d(LOG_TAG, "TabSpec spec");
        spec = tabHost.newTabSpec("tag2");
        Log.d(LOG_TAG, "setContent");

        //spec.setContent(R.id.tab2);

        spec.setContent(new Intent(this,iptActivity.class));
        Log.d(LOG_TAG, "setIndicator");
        spec.setIndicator("TAB 2");
        Log.d(LOG_TAG, "addTab");
        tabHost.addTab(spec);

        tabHost.setCurrentTab(0);


       // new ParseTask().execute();
    }
        private class ParseTask extends AsyncTask<Void, Void, String> {

            HttpURLConnection urlConnection = null;
            BufferedReader reader = null;
            String resultJson = "";

            @Override
            protected String doInBackground(Void... params) {
                // получаем данные с внешнего ресурса
                try {
                    Log.d(LOG_TAG,"получаем данные с внешнего ресурса");
                    URL url = new URL("_Здесь URL, получаю JSON данные_");

                    urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("GET");
                    urlConnection.connect();

                    InputStream inputStream = urlConnection.getInputStream();
                    StringBuffer buffer = new StringBuffer();

                    reader = new BufferedReader(new InputStreamReader(inputStream));

                    String line;
                    while ((line = reader.readLine()) != null) {
                        buffer.append(line);
                    }
                    Log.d(LOG_TAG,"Получили данные");
                    resultJson = buffer.toString();

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return resultJson;
            }

            @Override
            protected void onPostExecute(String strJson) {
                super.onPostExecute(strJson);
                // выводим целиком полученную json-строку
                Log.d(LOG_TAG, strJson);

                JSONObject dataJsonObj = null;


                try {
                    dataJsonObj = new JSONObject(strJson);
                    JSONArray atms = dataJsonObj.getJSONArray("atm");

                    ListView iptlist = (ListView) findViewById(R.id.iptlist);

                    mCatList = new ArrayList<HashMap<String, Object>>();
                    HashMap<String, Object> hm;



                  
                    for (int i = 0; i < atms.length(); i++) {
                        JSONObject atm = atms.getJSONObject(i);

                        hm = new HashMap<>();
                        hm.put(TITLE, atm.getString("ATMID")+" "+atm.getString("Name")); // Название
                        hm.put(DESCRIPTION, atm.getString("datet")); // Описание

                        if (atm.getString("Status").equals("1")) {
                            hm.put(ICON, R.drawable.circle_green);}
                        else
                        {hm.put(ICON, R.drawable.circle_red);}// Картинка

                        mCatList.add(hm);

                        String Atmid = atm.getString("ATMID");
                        String Atmname = atm.getString("Name");
                        String Status = atm.getString("Status");
                        String Datet = atm.getString("datet");

                        Log.d(LOG_TAG, "atmid: " + Atmid);
                        Log.d(LOG_TAG, "atmname: " + Atmname);
                        Log.d(LOG_TAG, "Status: " + Status);
                        Log.d(LOG_TAG, "Datet: " + Datet);
                    }


                    Log.d(LOG_TAG, "SimpleAdapter");
                    SimpleAdapter adapter = new SimpleAdapter(
                            MainActivity.this,
                            mCatList,
                            R.layout.list_item,
                            new String[]{TITLE, DESCRIPTION, ICON},
                            new int[]{R.id.text1, R.id.text2, R.id.img});
                    iptlist.setAdapter(adapter);


                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }


    public void sayHello(View V) throws JSONException {
        Log.d(LOG_TAG,"Пробуем заполнить ListView");



    }

    public void showname(View V) {

        Toast.makeText(getApplicationContext(),
                "", Toast.LENGTH_LONG).show();

    }
    public void showpr(View V) throws JSONException {

    }





 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
     getMenuInflater().inflate(R.menu.menu_main, menu);
     return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1: {
                //Кнопка обновления
                Log.d(LOG_TAG,"Кнопка обновления");
                


ВОТ ТУТ не могу получить ListView, который находится на atmActivity
                





            }
                return true;

            case R.id.item2:
                Toast.makeText(getApplicationContext(),
                        "", Toast.LENGTH_LONG).show();
                return true;
        }


        return super.onOptionsItemSelected(item);
    }
}



 

Заранее спасибо!

Вопрос: При попытке открыть второй и третий Activity происходит завершение работы программы

Подскажите где ошибка. В программирование андроида пару дней. При попытке открыть второй и третий Activity происходит завершение работы программы.
Activity_main
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
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    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="com.example.myapplication3.MainActivity">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/text1"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
 
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/linearLayout">
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="150dp">
 
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="180dp"
                android:layout_height="match_parent">
 
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="@string/text2"
                    android:id="@+id/textView2" />
 
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageButton"
                    android:src="@drawable/otkl"
                    android:contentDescription="@string/butt1" />
 
            </LinearLayout>
 
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
 
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="@string/text3"
                    android:id="@+id/textView3" />
 
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageButton2"
                    android:src="@drawable/otkl"
                    android:contentDescription="@string/butt2" />
 
            </LinearLayout>
        </LinearLayout>
 
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="150dp">
 
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="180dp"
                android:layout_height="match_parent">
 
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="@string/text4"
                    android:id="@+id/textView4" />
 
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageButton3"
                    android:src="@drawable/otkl"
                    android:contentDescription="@string/butt3" />
 
            </LinearLayout>
 
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
 
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="@string/text6"
                    android:id="@+id/textView5" />
 
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageButton4"
                    android:src="@drawable/otkl"
                    android:contentDescription="@string/butt4" />
 
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
 
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@+id/linearLayout"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/linearLayout2"
        android:weightSum="1">
 
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text5"
            android:id="@+id/button" />
 
    </LinearLayout>
 
</RelativeLayout>
MainActivity
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
package com.example.myapplication3;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_items,menu);
 
        return true;
    }
 
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
 
        switch (item.getItemId()){
            case R.id.settings1:
                return true;
 
            case R.id.settings2:
                return true;
 
            case R.id.settings3:
                return true;
 
            case R.id.settings4:
                Intent intent = (new Intent(this,Main2Activity.class ));
                startActivity(intent);
                break;
 
            case R.id.settings5:
                startActivity(new Intent(MainActivity.this,Main3Activity.class ));
                return true;
 
        }
 
        return super.onOptionsItemSelected(item);
    }
 
    //выбор меню
 
}
AndroidManifest
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"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication3">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main3Activity" />
        <activity android:name=".Main2Activity" />
    </application>
 
</manifest>
Ответ: Спасибо за помощь,разобрался дело было в этом,public class Main3Activity extends AppCompatActivity {, сменил на Activity
Вопрос: Жизненный цикл Activity и Fragment при повороте

Ребят запутался я совсем. Помогите разобраться.
Насколько я знаю при повороте удаляется активити, а соответственно все размещенные на ней фрагменты.
У меня на активити фрагменты выставляются в FragmentPagerAdapter'ом

При помощи точек останова я отследил вот что:
при первом запуске:
1) в активити - onCreate (в нем создается FragmentPagerAdapter в котором создаются объект фрагмента)
2) во фрагменте - onCreate
3) во фрагменте - onCreateView

Все вроде замечательно...
Поворачиваем экран.
1) во фрагменте - onDestroy
2) во фрагменте - onCreate
3) в активити - onCreate
4) во фрагменте - onCreateView

Вот тут то я и встал ... почему 3 пункт был после 2???
Посмотрел везде по жизненным циклам сначала создается Активити. И при уничтожении активити (а это при получается при повороте) уничтожаются и все фрагменты приаттаченные к нему.

Надеюсь на вашу помощь.
Спасибо.

Добавлено через 1 час 50 минут
В продолжение темы сделал отдельный проект.. с записями на каждое действие:

Запустил....
03-15 16:47:19.038 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onCreate
03-15 16:47:19.038 20042-20042/ru.ant.lifecycletest D/myLogs: Adapter init
03-15 16:47:19.044 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onStart
03-15 16:47:19.045 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onResume
03-15 16:47:19.083 20042-20042/ru.ant.lifecycletest D/myLogs: Adapter getItem
03-15 16:47:19.085 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onAttach
03-15 16:47:19.085 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onCreate
03-15 16:47:19.087 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onCreateView

----------------------
Перевернул.....
03-15 16:47:28.265 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onPause
03-15 16:47:28.265 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onPause
03-15 16:47:28.269 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onSaveInstanceState
03-15 16:47:28.269 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onStop
03-15 16:47:28.269 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onStop
03-15 16:47:28.269 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onDestroyView
03-15 16:47:28.272 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onDestroy
03-15 16:47:28.272 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onDetach
03-15 16:47:28.272 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onDestroy
03-15 16:47:28.324 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onAttach
03-15 16:47:28.324 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onCreate

03-15 16:47:28.339 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onCreate
03-15 16:47:28.339 20042-20042/ru.ant.lifecycletest D/myLogs: Adapter init
03-15 16:47:28.347 20042-20042/ru.ant.lifecycletest D/myLogs: Fragment onCreateView
03-15 16:47:28.347 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onStart
03-15 16:47:28.348 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onRestoreInstanceState
03-15 16:47:28.349 20042-20042/ru.ant.lifecycletest D/myLogs: Activity onResume

Выделил красным... Почему? Если мы видим выше что Фрагмент уничтожен, активити уничтожено... Как мертвый фрагмент прицепляется и запускает метод onCreate?? Причем посмотрел что передает в параметре типа Context в onAttach, там передается уже другой объект активити.

Добавлено через 12 минут
PS При этом если выйти из приложения кнопкой назад . а потом заново зайти будет как будто запустил заново приложение.
Ответ: Вот такая ситуация если поставить лог до супер в onCreate в активити. Тут вообще мрак ... onResume вылезает до onCreate. Причем 2 раза ) И все равно создание фрагмента вылезает вперед даже СуперКласса onCreate у активити...

03-16 11:44:18.617 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onResume
03-16 11:44:18.683 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onCreate
03-16 11:44:18.683 7370-7370/ru.ant.lifecycletest D/myLogs: Adapter init
03-16 11:44:18.688 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onStart
03-16 11:44:18.690 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onResume
03-16 11:44:18.728 7370-7370/ru.ant.lifecycletest D/myLogs: Adapter getItem
03-16 11:44:18.729 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onAttach
03-16 11:44:18.729 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onCreate
03-16 11:44:18.730 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onCreateView
03-16 11:44:18.731 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onActivityCreated
перевернул
03-16 11:44:34.772 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onPause
03-16 11:44:34.772 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onPause
03-16 11:44:34.804 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onSaveInstanceState
03-16 11:44:34.805 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onStop
03-16 11:44:34.805 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onStop
03-16 11:44:34.805 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onDestroyView
03-16 11:44:34.805 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onDestroy
03-16 11:44:34.805 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onDetach
03-16 11:44:34.805 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onDestroy
03-16 11:44:34.819 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onResume
03-16 11:44:34.821 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onAttach
03-16 11:44:34.821 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onCreate
03-16 11:44:34.839 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onCreate
03-16 11:44:34.839 7370-7370/ru.ant.lifecycletest D/myLogs: Adapter init
03-16 11:44:34.842 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onCreateView
03-16 11:44:34.842 7370-7370/ru.ant.lifecycletest D/myLogs: Fragment onActivityCreated
03-16 11:44:34.842 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onStart
03-16 11:44:34.843 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onRestoreInstanceState
03-16 11:44:34.844 7370-7370/ru.ant.lifecycletest D/myLogs: Activity onResume

Добавлено через 9 часов 19 минут
Вообщем кажется я нашел преступничка, господа
Это FragmentPagerAdapter шалит и при повороте без ведома создает автоматом новые фрагменты, без прохождения процедуры инициализации.
Вот с такой же проблемой



Вот это
Java
1
FragmentPageAdapter.getItem(int position)
Заменил на это:
Java
1
FragmentPageAdapter.instantiateItem(GroupView view, int position)
При этом получает объект реально установленного фрагмента

Может кому пригодится
Вопрос: Как обратиться к элементу Drawer Activity?

Всем доброго времени суток. Я начинаю изучать Android и возникла проблема. Я создал проект с Drawer Activity. В шапке шторки планирую разместить информацию о гаджете. И хочу чтобы при запуске приложения в шапку шторки в TextView выводились данные о смартфоне. Но при попытке записать любую инфу в этот TextView IDE выдает ошибку - якобы мой текствеью - null.
В методе OnCreate я нашел мой элемент, но все манипуляции с ним выбивают ошибку. Как верно работать со шторкой?
Java
1
drawerItemModel = (TextView) findViewById(R.id.drawerItemModel);
Кликните здесь для просмотра всего текста
Ответ: Нет, первый это Main.java
Второй content_main.xml
Третий activity_main.xml
Последний nav_header_main.xml

Они автоматически сгенерировались при создании проекта/

Добавлено через 1 час 18 минут
Нагуглил все таки решение. Нужно программно добавить NavigationHeader в шторку. В начале в коде разметки Дровера удаляем строку
Java
1
app:headerLayout="@layout/nav_header_main"
А затем дополняем код Активности следующими строками (выделил их звёздочками **)
Java
1
2
3
4
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
     **   View navHeaderMain = navigationView.inflateHeaderView(R.layout.nav_header_main);**
    **    drawerItemModel = (TextView) navHeaderMain.findViewById(R.id.drawerItemModel2);**
        navigationView.setNavigationItemSelectedListener(this);
Теперь можно спокойно обращаться к элементам шапки.
Вопрос: Android studio шаблон GoogleMap Activity

Создал шаблон гугл карт. В value есть файл google_maps_api.xml(debug)//

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<resources>
    <string name="google_maps_key_instructions" templateMergeStrategy="replace"><!--
 
    TODO: Before you run your application, you need a Google Maps API key.
 
    To get one, follow this link, follow the directions and press "Create" at the end:
 
[url]https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=F0:B2:F3:N5:41:D3:D1:38:89:5D:C4:F1:E1:24:A2:60:D7:F1:D4:E5%3Broot.googlemap[/url]
 
    You can also add your credentials to an existing key, using this line:
    F0:B2:F3:N5:41:D3:D1:38:89:5D:C4:F1:E1:24:A2:60:D7:F1:D4:E5;mypackge.googlemap
 
    Once you have your key (it starts with "AIza"), replace the "google_maps_key"
    string in this file.
    --></string>
 
    <string name="google_maps_key" templateMergeStrategy="preserve">AIzaSyCkGpkNVdernKBsuajZ62zKf1BSMhYFQgs</string>
</resources>
Я перехожу по ссылки, создаю новый проект в консоли и мне выдает код типа AIza.. я его вставляю в google_maps_key и запускаю проект..


12-12 08:56:16.096 30610-30628/root.googlemap E/Google Maps Android API﹕ Authorization failure. Please see for how to correctly set up the map.
12-12 08:56:16.126 30610-30628/root.googlemap E/Google Maps Android API﹕ In the Google Developer Console ()
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
API Key: AIzaS***********************
Android Application (<cert_fingerprint>;<package_name>): C8:C9:09:31:BF:1C:AD:6E:6D:2E:3D:F6:E5:9F:A5:28:35:46:37:93;root.googlemap

Google Maps Android API v2 = включен

Я пробывал еще в jdk прописывать keytool -list -v -keystore mystore.keystore
вот и SHA1 certificate был таким же как и сгенерила андроид студия... Помогите пожалуйста разобраться

Добавлено через 1 час 53 минуты
Сейчас пробывал запустить примеры из библиотеки D:\Users\59538\Desktop\android-studio\sdk\extras\google\google_play_services\samples\maps


Вот и там сказано в манифесте

XML
1
2
3
4
5
6
7
<!-- ** You need to replace the key below with your own key. **
         The example key below will not be accepted because it is not linked to the
         certificate which you will use to sign this application.
         See: [url]https://developers.google.com/maps/documentation/android/start[/url]
         for instructions on how to get your own key. -->
    <meta-data android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyCk2egskjhFGHJKfgs"/>
Я заменил на свой и ничего неработает.. что я делаю нитак?? Опять таже ошибка

Добавлено через 14 минут
lol ВСЕ РАБОТАЕТ
Ответ:
Сообщение от kirawa
Создал шаблон гугл карт. В value есть файл google_maps_api.xml(debug)//

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<resources>
    <string name="google_maps_key_instructions" templateMergeStrategy="replace"><!--
 
    TODO: Before you run your application, you need a Google Maps API key.
 
    To get one, follow this link, follow the directions and press "Create" at the end:
 
[url]https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=F0:B2:F3:N5:41:D3:D1:38:89:5D:C4:F1:E1:24:A2:60:D7:F1:D4:E5%3Broot.googlemap[/url]
 
    You can also add your credentials to an existing key, using this line:
    F0:B2:F3:N5:41:D3:D1:38:89:5D:C4:F1:E1:24:A2:60:D7:F1:D4:E5;mypackge.googlemap
 
    Once you have your key (it starts with "AIza"), replace the "google_maps_key"
    string in this file.
    --></string>
 
    <string name="google_maps_key" templateMergeStrategy="preserve">AIzaSyCkGpkNVdernKBsuajZ62zKf1BSMhYFQgs</string>
</resources>
Я перехожу по ссылки, создаю новый проект в консоли и мне выдает код типа AIza.. я его вставляю в google_maps_key и запускаю проект..


12-12 08:56:16.096 30610-30628/root.googlemap E/Google Maps Android API﹕ Authorization failure. Please see for how to correctly set up the map.
12-12 08:56:16.126 30610-30628/root.googlemap E/Google Maps Android API﹕ In the Google Developer Console ()
Ensure that the "Google Maps Android API v2" is enabled.
Ensure that the following Android Key exists:
API Key: AIzaS***********************
Android Application (<cert_fingerprint>;<package_name>): C8:C9:09:31:BF:1C:AD:6E:6D:2E:3D:F6:E5:9F:A5:28:35:46:37:93;root.googlemap

Google Maps Android API v2 = включен

Я пробывал еще в jdk прописывать keytool -list -v -keystore mystore.keystore
вот и SHA1 certificate был таким же как и сгенерила андроид студия... Помогите пожалуйста разобраться

Добавлено через 1 час 53 минуты
Сейчас пробывал запустить примеры из библиотеки D:\Users\59538\Desktop\android-studio\sdk\extras\google\google_play_services\samples\maps


Вот и там сказано в манифесте

XML
1
2
3
4
5
6
7
<!-- ** You need to replace the key below with your own key. **
         The example key below will not be accepted because it is not linked to the
         certificate which you will use to sign this application.
         See: [url]https://developers.google.com/maps/documentation/android/start[/url]
         for instructions on how to get your own key. -->
    <meta-data android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyCk2egskjhFGHJKfgs"/>
Я заменил на свой и ничего неработает.. что я делаю нитак?? Опять таже ошибка

Добавлено через 14 минут
lol ВСЕ РАБОТАЕТ
А в чем проблема то была?
Вопрос: Activity и Fragment

Всем добрый вечер. Создал приложение новостей с 2 Activity и 1 Adapter. Сейчас решил в проект добавить нижнее меню (Bottom Navigation View). Но такое меню работает только с фрагментами. Помогите исправить мои коды так, чтобы из активити получились фрагменты.

NewsActivity (это главная страница со списком новостей):
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
 
public class NewsActivity extends AppCompatActivity {
 
    private final String JSON_URL = "https://pastebin.com/raw/VnmRzcFP";
    private JsonArrayRequest request;
    private RequestQueue requestQueue;
    private List<News> listNews;
    private RecyclerView recyclerView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news);
 
    listNews = new ArrayList<>();
        recyclerView = findViewById(R.id.recyclerviewid);
        jsonrequest();
 
    }
 
    private void jsonrequest() {
 
        request = new JsonArrayRequest(JSON_URL, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
 
                JSONObject jsonObject = null;
 
                for (int i = 0; i < response.length(); i++) {
 
                    try {
                        jsonObject = response.getJSONObject(i);
                        News news = new News();
                        news.setName(jsonObject.getString("name"));
                        news.setInfo(jsonObject.getString("info"));
                        news.setSummary(jsonObject.getString("summary"));
                        news.setDate(jsonObject.getString("date"));
                        news.setImage_url(jsonObject.getString("image"));
                        listNews.add(news);
 
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
 
                }
 
                setuprecyclerview(listNews);
 
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
 
            }
        });
 
        requestQueue = Volley.newRequestQueue(NewsActivity.this);
        requestQueue.add(request);
 
    }
 
    private void setuprecyclerview(List<News> listNews) {
 
        RecyclerViewAdapter myadapter = new RecyclerViewAdapter(this, listNews);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
 
        recyclerView.setAdapter(myadapter);
 
    }
}
News_Info_Activity (это страница определённой новости с полным описанием):
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
public class News_Info_Activity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news__info);
 
        getSupportActionBar().hide();
 
        String name = getIntent().getExtras().getString("news_name");
        String info = getIntent().getExtras().getString("news_info");
        String image_url = getIntent().getExtras().getString("news_image");
 
        CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsingtoolbar_id);
        collapsingToolbarLayout.setTitleEnabled(true);
 
        TextView tv_name = findViewById(R.id.aa_news_name);
        TextView tv_info = findViewById(R.id.aa_news_info);
        ImageView img = findViewById(R.id.aa_thumbnail);
 
        tv_name.setText(name);
        tv_info.setText(info);
 
 
        RequestOptions requestOptions = new RequestOptions().centerCrop().placeholder(R.drawable.loading_shape).error(R.drawable.loading_shape);
 
 
        Glide.with(this).load(image_url).apply(requestOptions).into(img);
 
    }
}
RecyclerAdapter:
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
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
 
    private Context mContext;
    private List<News> mData;
    RequestOptions option;
 
    public RecyclerViewAdapter(Context mContext, List<News> mData) {
        this.mContext = mContext;
        this.mData = mData;
 
        option = new RequestOptions().centerCrop().placeholder(R.drawable.loading_shape).error(R.drawable.loading_shape);
 
    }
 
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
 
        View view;
        LayoutInflater inflater = LayoutInflater.from(mContext);
        view = inflater.inflate(R.layout.news_row_item, parent, false);
        final MyViewHolder viewHolder = new MyViewHolder(view);
        viewHolder.view_container.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                Intent i = new Intent(mContext, News_Info_Activity.class);
                i.putExtra("news_name", mData.get(viewHolder.getAdapterPosition()).getName());
                i.putExtra("news_info", mData.get(viewHolder.getAdapterPosition()).getInfo());
                i.putExtra("news_date", mData.get(viewHolder.getAdapterPosition()).getDate());
                i.putExtra("news_summary", mData.get(viewHolder.getAdapterPosition()).getSummary());
                i.putExtra("news_image", mData.get(viewHolder.getAdapterPosition()).getImage_url());
 
                mContext.startActivity(i);
 
            }
        });
 
        return viewHolder;
    }
 
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
 
        holder.tv_name.setText(mData.get(position).getName());
        holder.tv_summary.setText(mData.get(position).getSummary());
        holder.tv_date.setFormat24Hour(mData.get(position).getDate());
 
        Glide.with(mContext).load(mData.get(position).getImage_url()).apply(option).into(holder.image_thumbnail);
 
    }
 
 
    @Override
    public int getItemCount() {
        return mData.size();
    }
 
    public static class MyViewHolder extends RecyclerView.ViewHolder {
 
        TextView tv_name;
        TextView tv_summary;
        TextClock tv_date;
        ImageView image_thumbnail;
        RelativeLayout view_container;
 
        public MyViewHolder(View itemView) {
            super(itemView);
 
            view_container = itemView.findViewById(R.id.container);
 
            tv_name = itemView.findViewById(R.id.news_name);
            tv_summary = itemView.findViewById(R.id.news_summary);
            tv_date = itemView.findViewById(R.id.news_date);
            image_thumbnail = itemView.findViewById(R.id.thumbnail);
 
        }
    }
 
}
Ответ:
Очень полезная информация. Сделал, как в примере, работает, но есть 1 маленькая проблемка в дизайне. Может вы поймёте почему так и как исправить. Проблема в том, что моё Activity новостей уходит за фон меню (скрин прилагается).

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
<?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">
 
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
 
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
 
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"></FrameLayout>
 
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorAccent"
                android:layout_alignParentBottom="true"></TabWidget>
 
        </RelativeLayout>
    </TabHost>
</LinearLayout>
Список новостей:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activities.NewsActivity">
 
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerviewid"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
    </android.support.v7.widget.RecyclerView>
 
</LinearLayout>
И шаблон новостей:
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
<?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="wrap_content"
    android:layout_marginBottom="10dp"
    android:layout_marginTop="1dp"
    android:background="#fff"
    android:elevation="3dp"
    android:orientation="horizontal"
    android:id="@+id/container">
 
    <ImageView
        android:id="@+id/thumbnail"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/loading_shape" />
 
    <TextView
        android:id="@+id/news_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/thumbnail"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="20dp"
        android:padding="3dp"
        android:text="News_Title"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        android:textStyle="bold"
        android:typeface="serif" />
 
    <TextView
        android:id="@+id/news_summary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/news_name"
        android:layout_below="@+id/news_name"
        android:layout_marginTop="10dp"
        android:padding="3dp"
        android:text="TextView"
        android:textSize="14sp" />
 
    <TextClock
        android:id="@+id/news_date"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/news_summary"
        android:layout_below="@+id/news_summary"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:padding="3dp"
        android:text="News_Date"
        android:textColor="#646464"
        android:textSize="12sp" />
 
</RelativeLayout>
Вопрос: Переход с элемента listView на activity

никак не возьму в толк, каким образом можно реализовать переход на новое activity с элемента listView, чтобы при нажатии на 1 строку совершался переход на activity1, при нажатии на вторую - activity2, и т.д. если у кого есть - скиньте пример кода, пожалуйста
Ответ: Примерно так.
Естественно перед тем как использовать ListView нужно создать адаптер и подходящий массив.
Параметры функции onItemClick, position или id - это номер элемента, который был выбран в ListView.
Соответственно вы должны реализовать логику(if, case...) чтоб открыть соответствующий intent.

Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
ListView listView= (ListView)findViewById(R.id.listView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                
            }
        });