Программирование Android Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал
Уже не в первый раз задаю вопрос.
Молчание. В лучшем случае - "RTFM" и точка.
Так вот, официального мануала, где есть ответ на вышепоставленный вопрос и все описано по шагам, я на нашел. Неофициального - тоже, будь то на русском или английском.
Тем не менее, говорят, что сделать то, что я хочу, вполне реально, и такие приложения иногда делают.
Прошу дать либо ссылку на мануал, либо вкратце...
https://www.cyberforum.ru/ android-dev/ thread1455758.html
Программирование Android Сохранить картинку на канве
https://www.cyberforum.ru/ android-dev/ thread1455659.html Здравствуйте! Делаю игру, и ее часть - это "комната" рисования, где должно сохраняться текущее нарисованное изображение. В ней в виде customView расположен холст, на котором пользователь что-то рисует. Но если ему из этой "комнаты" выйти и опять зайти, то нарисованного ранее конечно уже не будет. Много уже сайтов с решениями перелопатил, но ничего не помогает - или ошибки, или просто ничего не...
Как добраться до объекта Программирование Android В фрагменте установил слушателя по клику
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.v("My Project", String.valueOf(position));
Программирование Android Как вместо названия Activity подставить элемент ListView?
В приложении 2 Activity - MainActivity и DetailActivity.
При запуске приложения открывается MainActivity, где отображается список из List
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
01.06.2015, 10:59
[ТС]
0
На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы - Программирование Android - Ответ 7700675
01.06.2015, 10:59.
Показов 3012.
Ответов 42
Ответ
Rube ,
просто я их не вижу, поэтому не знаю что класть...
FirstFragment:
Кликните здесь для просмотра всего текста
Java 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
public class FirstFragment extends Fragment implements
LoaderCallbacks< Cursor > {
private Context context;
public DB db;
public static SimpleCursorAdapter scAdapter;
private Cursor cursor;
ListView lvData;
static String arg = null ;
private static final int CM_DELETE_ID = 1 ;
DBHelper dbHelper;
/** Handle the results from the voice recognition activity. */
// @Override
// public View onCreateView(LayoutInflater inflater, ViewGroup container,
// Bundle savedInstanceState) {
// return inflater.inflate(R.layout.first, null);
//
//
// // return view;
// }
@SuppressWarnings ( "deprecation" )
@Override
public void onActivityCreated( Bundle savedInstanceState) {
super .onActivityCreated ( savedInstanceState) ;
db = new DB( getActivity( ) ) ;
db.open ( ) ;
// получаем курсор
cursor = db.getAllData ( arg) ;
String count = String .valueOf ( cursor.getCount ( ) ) ;
Toast tost = Toast.makeText ( getActivity( ) ,
count, Toast.LENGTH_SHORT ) ;
tost.setGravity ( 50 , 200 , 30 ) ;
tost.show ( ) ;
//CursorLoader cursorLoader = new CursorLoader(getActivity(), android.provider.Browser.BOOKMARKS_URI, null, null, null, null);
//getActivity().startManagingCursor(cursor);
// формируем столбцы сопоставления
String [ ] from = new String [ ] { DB.COLUMN_IMG , DB.COLUMN_TXT } ;
int [ ] to = new int [ ] { R.id .ivImg , R.id .tvText } ;
// создааем адаптер и настраиваем список
scAdapter = new SimpleCursorAdapter( getActivity( ) , R.layout .item , cursor, from, to, 0 ) ;
// scAdapter = new SimpleCursorAdapter(getActivity(), R.layout.item, cursor, from,
// to);
lvData = ( ListView ) getView( ) .findViewById ( R.id .listView1 ) ;
lvData.setAdapter ( scAdapter) ;
//getLoaderManager().initLoader(0, null, this);
getActivity( ) .getSupportLoaderManager ( ) .initLoader ( 0 , null , this ) ;
}
// обработка нажатия кнопки
public void onButtonClick( View view) {
// добавляем запись
db.addRec ( "sometext " + ( scAdapter.getCount ( ) + 1 ) , R.drawable .ic_launcher , "да" ) ;
// получаем новый курсор с данными
getActivity( ) .getSupportLoaderManager ( ) .getLoader ( 0 ) .forceLoad ( ) ;
}
public void onCreateContextMenu( ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super .onCreateContextMenu ( menu, v, menuInfo) ;
menu.add ( 0 , CM_DELETE_ID, 0 , R.string .delete_record ) ;
}
public boolean onContextItemSelected( MenuItem item) {
if ( item.getItemId ( ) == CM_DELETE_ID) {
// получаем из пункта контекстного меню данные по пункту списка
AdapterContextMenuInfo acmi = ( AdapterContextMenuInfo) item
.getMenuInfo ( ) ;
// извлекаем id записи и удаляем соответствующую запись в БД
db.delRec ( acmi.id ) ;
// получаем новый курсор с данными
getActivity( ) .getSupportLoaderManager ( ) .getLoader ( 0 ) .forceLoad ( ) ;
return true ;
}
return super .onContextItemSelected ( item) ;
}
@Override
public Loader< Cursor > onCreateLoader( int id, Bundle bndl) {
return new MyCursorLoader( getActivity( ) , db) ;
}
@Override
public void onLoadFinished( Loader< Cursor > loader, Cursor cursor) {
scAdapter.swapCursor ( cursor) ;
}
@Override
public void onLoaderReset( Loader< Cursor > loader) {
// TODO Auto-generated method stub
}
class MyCursorLoader extends CursorLoader {
DB db;
public MyCursorLoader( Context context, DB db) {
super ( context) ;
this .db = db;
}
@Override
public Cursor loadInBackground( ) {
Cursor cursor = db.getAllData ( arg) ;
try {
TimeUnit .SECONDS .sleep ( 1 ) ;
} catch ( InterruptedException e) {
e.printStackTrace ( ) ;
}
return cursor;
}
}
public void onDestroy( ) {
super .onDestroy ( ) ;
// закрываем подключение при выходе
db.close ( ) ;
}
}
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
public class MainActivity extends ActionBarActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks {
private NavigationDrawerFragment mNavigationDrawerFragment;
private CharSequence mTitle;
//_____________________________________________________________________________________________________
public static final int FRAGMENTS = 3 ;
static final String TAG = "myLogs" ;
static final int PAGE_COUNT = 10 ;
private static final Context Context = null ;
// private String[] mCatTitles;
// private ListView mDrawerList;
public DB db;
ViewPager pager;
PagerAdapter pagerAdapter;
private Cursor cursor;
static String arg = null ;
static String count = null ;
//_____________________________________________________________________________________________________
@Override
protected void onCreate( Bundle savedInstanceState) {
super .onCreate ( savedInstanceState) ;
setContentView( R.layout .main ) ;
// db = new DB(this);
// db.open();
// cursor = db.getAllData(arg);
// count = String.valueOf(cursor.getCount());
// Toast tost = Toast.makeText(getApplicationContext(),
// count, Toast.LENGTH_SHORT);
// tost.setGravity(50, 200, 30);
// tost.show();
mNavigationDrawerFragment = ( NavigationDrawerFragment)
getSupportFragmentManager( ) .findFragmentById ( R.id .navigation_drawer ) ;
mTitle = getTitle( ) ;
// Set up the drawer.
mNavigationDrawerFragment.setUp (
R.id .navigation_drawer ,
( DrawerLayout) findViewById( R.id .drawer_layout ) ) ;
//
// _fragments.add(FRAGMENT_ONE, new FirstFragment());
// _fragments.add(FRAGMENT_TWO, new SecondFragment());
// _fragments.add(FRAGMENT_THREE, new TherdFragment());
pager = ( ViewPager) findViewById( R.id .pager ) ;
pagerAdapter = new MyFragmentPagerAdapter( getSupportFragmentManager( ) ) ;
pager.setAdapter ( pagerAdapter) ;
// pager.setOnPageChangeListener(new OnPageChangeListener()
// {
//
// @Override
// public void onPageSelected(int position)
// {
// Log.d(TAG, "onPageSelected, position = " + position);
// }
//
// @Override
// public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
// {
// }
//
// @Override
// public void onPageScrollStateChanged(int state)
// {
// }
// });
}
//---------------end onCreate------------
@Override
public void onNavigationDrawerItemSelected( int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager( ) ;
fragmentManager.beginTransaction ( )
.replace ( R.id .container , PlaceholderFragment.newInstance ( position + 1 ) )
.commit ( ) ;
}
//----------Action of String------
public void onSectionAttached( int number) {
switch ( number) {
case 1 :
mTitle = getString( R.string .title_section1 ) ;
break ;
case 2 :
mTitle = getString( R.string .title_section2 ) ;
break ;
case 3 :
mTitle = getString( R.string .title_section3 ) ;
break ;
}
}
//---------------ActionBar------------------------
public void restoreActionBar( ) {
ActionBar actionBar = getSupportActionBar( ) ;
actionBar.setNavigationMode ( ActionBar.NAVIGATION_MODE_STANDARD ) ;
actionBar.setDisplayShowTitleEnabled ( true ) ;
actionBar.setTitle ( mTitle) ;
}
@Override
public boolean onCreateOptionsMenu( Menu menu) {
if ( ! mNavigationDrawerFragment.isDrawerOpen ( ) ) {
// Only show items in the action bar relevant to this screen
// if the drawer is not showing. Otherwise, let the drawer
// decide what to show in the action bar.
getMenuInflater( ) .inflate ( R.menu .main , menu) ;
restoreActionBar( ) ;
return true ;
}
return super .onCreateOptionsMenu ( menu) ;
}
@Override
public boolean onOptionsItemSelected( MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId ( ) ;
if ( id == R.id .action_settings ) {
return true ;
}
return super .onOptionsItemSelected ( item) ;
}
//---------END------ActionBar------------------------
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number" ;
public static PlaceholderFragment newInstance( int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment( ) ;
Bundle args = new Bundle( ) ;
args.putInt ( ARG_SECTION_NUMBER, sectionNumber) ;
fragment.setArguments ( args) ;
return fragment;
}
public PlaceholderFragment( ) {
}
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate ( R.layout .fragment_main , container, false ) ;
return rootView;
}
@Override
public void onAttach( Activity activity) {
super .onAttach ( activity) ;
( ( MainActivity) activity) .onSectionAttached (
getArguments( ) .getInt ( ARG_SECTION_NUMBER) ) ;
}
}
//--------------end NavDr and ActionBar------------
private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter
{
public MyFragmentPagerAdapter( FragmentManager fm) {
super ( fm) ;
}
@Override
public Fragment getItem( int position)
{
//return _fragments.get(position);
return PageFragment.newInstance ( position) ;
}
@Override
public int getCount( )
{
return FRAGMENTS;
// return PAGE_COUNT;
}
// v2
@Override
public CharSequence getPageTitle( int position)
{
return "Title " + position;
}
}
//--------------END----MyFragmentPagerAdapter----------
}
PageFragment
Кликните здесь для просмотра всего текста
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
public class PageFragment extends Fragment
{
static final String TAG = "myLogs" ;
static final String ARGUMENT_PAGE_NUMBER = "arg_page_number" ;
static final String SAVE_PAGE_NUMBER = "save_page_number" ;
public DB db;
int pageNumber;
int backColor;
static PageFragment newInstance( int page)
{
PageFragment pageFragment = new PageFragment( ) ;
Bundle arguments = new Bundle( ) ;
arguments.putInt ( ARGUMENT_PAGE_NUMBER, page) ;
pageFragment.setArguments ( arguments) ;
return pageFragment;
}
@Override
public void onCreate( Bundle savedInstanceState)
{
super .onCreate ( savedInstanceState) ;
pageNumber = getArguments( ) .getInt ( ARGUMENT_PAGE_NUMBER) ;
Log.d ( TAG, "onCreate: " + pageNumber) ;
Random rnd = new Random ( ) ;
backColor = Color .argb ( 40 , rnd.nextInt ( 256 ) , rnd.nextInt ( 256 ) , rnd.nextInt ( 256 ) ) ;
int savedPageNumber = -1 ;
if ( savedInstanceState ! = null )
{
savedPageNumber = savedInstanceState.getInt ( SAVE_PAGE_NUMBER) ;
}
Log.d ( TAG, "savedPageNumber = " + savedPageNumber) ;
}
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = null ;
switch ( pageNumber) {
case 0 :
// return inflater.inflate(R.layout.first, null);
View myFragmentView = inflater.inflate ( R.layout .first ,
container, false ) ;
myFragmentView.setBackgroundColor ( backColor) ;
ListView lvData = ( ListView ) myFragmentView.findViewById ( R.id .listView1 ) ;
lvData.setBackgroundColor ( Color .GREEN ) ;
return myFragmentView;
// view = inflater.inflate(R.layout.first, null);
// ListView lv = (ListView) view.findViewById(R.id.listView1);
// lv.setAdapter(FirstFragment.scAdapter);
// lv.setBackgroundColor(backColor);
// TextView tvPage1 = (TextView) view.findViewById(R.id.tvView1);
// tvPage1.setText("Page " + pageNumber);
// tvPage1.setBackgroundColor(backColor);
// break;
case 1 :
view = inflater.inflate ( R.layout .second , null ) ;
TextView tvPage2 = ( TextView) view.findViewById ( R.id .tvView2 ) ;
tvPage2.setText ( "Page " + pageNumber) ;
tvPage2.setBackgroundColor ( backColor) ;
break ;
case 2 :
view = inflater.inflate ( R.layout .therd , null ) ;
TextView tvPage3 = ( TextView) view.findViewById ( R.id .tvView3 ) ;
tvPage3.setText ( "Page " + pageNumber) ;
tvPage3.setBackgroundColor ( backColor) ;
break ;
}
return view;
}
@Override
public void onSaveInstanceState( Bundle outState)
{
super .onSaveInstanceState ( outState) ;
outState.putInt ( SAVE_PAGE_NUMBER, pageNumber) ;
}
@Override
public void onDestroy( )
{
super .onDestroy ( ) ;
Log.d ( TAG, "onDestroy: " + pageNumber) ;
}
}
first.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
<?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" >
<LinearLayout
android:layout_width ="match_parent"
android:layout_height ="wrap_content"
android:orientation ="vertical" >
<TextView
android:id ="@+id/tvView1"
android:layout_width ="match_parent"
android:layout_height ="wrap_content"
android:text ="@string/list_activity1"
android:textColor ="#000000" />
<ListView
android:id ="@+id/listView1"
android:layout_width ="match_parent"
android:layout_height ="wrap_content" >
</ListView>
</LinearLayout>
</LinearLayout>
базу не трогал, а больше вроде ничего с моей проблемой не связано...
Вернуться к обсуждению:
На каждой странице ViewPager'а должен отображаться свой ListFragment данные для которого берутся из базы Программирование Android
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2015, 10:59
42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2015, 10:59
Помогаю со студенческими работами здесь
Не могу понять из какого регистра берутся данные для отчета 1С 7.7 Торговля + склад, редакция 9.2, отчет по продажам ТМЦ. Меня очень интересует колонка...
Создать сайт, данные которого автоматически брались бы из базы данных Здравствуйте! Необходимо создать сайт, данные которого автоматически брались бы из базы данных....
Как сделать чтобы у каждой строки был свой список. Например, есть маршрутка, у каждой из нее есть свой список Как сделать чтобы у каждой строки был свой список. Например, есть маршрутка, у каждой из нее есть...
Как создать контрол, который при конструировании не должен отображаться на форме? Может кто подскажет, как создать контрол, который при конструировании не должен отображаться на...
Не берутся названия полей из базы У меня есть RecordSet. Когда я строю HTML таблицу, то название
полей беру из массива:
Dim...
как лудче прикрепить фаил html с ифной который должен отображаться на страницах? Народ подскажите как лудче сделать, у меня сайт примерно на 50 страниц, и есть один блок который на...
0
Наверх