public void onItemClick(AdapterView<?> parent, View itemClicked, int position,long id) {
Romag's questions
代码本身:
private void openFile() {
db = sqlHelper.getReadableDatabase();// открываем подключение к базе данных
userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
String[] headers = new String[]{COLUMN_NAME, COLUMN_YEAR};
userAdapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item,
userCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}, 0);
listView.setAdapter(userAdapter);
}
如果你写了这么多这样的字符:
db.execSQL("INSERT INTO "+ TABLE +" (" + COLUMN_NAME
+ ", " + COLUMN_YEAR + ") VALUES ('Том Смит', 19asgdahsgdagsdiagsidagsiydgaigsdiagisdia);");
开始在 Android 中与 SQLite 打交道。我了解如何找出游标中的数据量,但不了解如何显示此数据:
userCursor = db.rawQuery("select " + COLUMN_NAME + " from " + TABLE, null);//Получаем все данные из таблицы TABLE(users)
textBD.setText(Integer.toString(userCursor.getCount()));// В getCount получили сколько записей содержит курсор
userCursor.moveToFirst();//Перевели курсор к первому значению
完整代码:
@Override
public void onClick(View v) {
userCursor = db.rawQuery("select " + COLUMN_NAME + " from " + TABLE, null);//Получаем все данные из таблицы TABLE(users)
textBD.setText(Integer.toString(userCursor.getCount()));// В getCount получили сколько записей содержит курсор
userCursor.moveToFirst();//Перевели курсор к первому значению
if (userCursor.moveToFirst()) {
while (!userCursor.isAfterLast()) {
String data = userCursor.getString(userCursor.getColumnIndex("data"));
// обрабатываем data
// двигаемся к следующему значению
userCursor.moveToNext();
}
}
// не забывайте закрыть курсор
userCursor.close();
Toast toast = Toast.makeText(getApplicationContext(),
"ОКЕЙ", Toast.LENGTH_SHORT);
toast.show();
}
});
}
错误:
Process: com.example.mysql_legkosuka, PID: 10864
java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at com.example.mysql_legkosuka.MainActivity$1.onClick(MainActivity.java:51)
at android.view.View.performClick(View.java:4756)
at android.view.View$PerformClick.run(View.java:19749)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
复习了几节课,看了几篇文章。
而且我不明白如何创建、修改和打开文件。
你能写下每一项吗?
首先点击——打开。第二次点击是关闭。第三次单击 - 打开。等等。
while (countSchet % 2 == 0)
{
ArrayAdapter<String> adapter = newArrayAdapter<String>(this android.R.layout.simple_list_item_1, nameList);//Создали адаптер для занесения в listView
listView.setAdapter(adapter);
listView.setVisibility(View.VISIBLE);
countSchet=+1;
listView.setOnItemClickListener(newAdapterView.OnItemClickListener()
{
@Override
//Обрабатываем нажатие на элемент
public void onItemClick(AdapterView<>parent, View itemClicked, int position, long id)
{
TextView textView = (TextView)itemClicked;
String strText = textView.getText().toString();
mEditText.setText(strText);//меняем mEditText
Toast toast = Toast.makeText(getApplicationContext(), "Файл сохранен", Toast.LENGTH_SHORT);
toast.show();
listView.setVisibility(View.GONE);
return;
}
});
}
while (countSchet % 2 != 0)
{
listView.setVisibility(View.GONE);
countSchet=+1;
return;
}
我正在为 android 编写一个播放器,我不知道如何将录音正确保存到系统缓存以及如何从那里删除它们。
我开始用 Java 为 android 编写记事本,我对如何在记事本中保存和打开笔记很感兴趣。
我不知道发生了什么,也不知道我们是如何得到朋友名单的。
listFrands = (ListView) findViewById(R.id.listView);//Инициализация переменной вывода друзей
VKRequest request = VKApi.friends().get(VKParameters.from(VKApiConst. FIELDS,"first_name,last_name"));//Выводит начальное и конечное имя
request.executeWithListener(new VKRequest.VKRequestListener() {
@Override
public void onComplete(VKResponse response) {
super.onComplete(response);
VKList list = (VKList) response.parsedModel;
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_expandable_list_item_1,list);
listFrands.setAdapter(arrayAdapter);
在模拟器上完全编译并安装APK文件后,应用程序根本无法启动(屏幕只是白色),在调试中,每秒出现以下消息:
W/Resources: Converting to string: TypedValue{t=0x10/d=0x14 a=-1}
W/Resources: Converting to string: TypedValue{t=0x10/d=0x14 a=-1}
W/EGL_emulation: eglSurfaceAttrib not implemented
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xdb0d14a0, error=EGL_SUCCESS`
在 xml 中,您可以编写这样的代码以更改样式
@android:style/Theme.Material.Light.DarkActionBar
如何在 Java 代码中执行相同的操作。
我想将语法突出显示更改为其他(非标准),例如 SumblimeText。如何操作以及在哪里下载 intellij idea 主题?
找不到好的 Java 实践,javarush 不适合。阅读《Head First Java》一书。我们需要或多或少的生产任务,算法和其他东西......
我有2种方法,要么读很多书。或者参加一个项目并尝试在旅途中了解所有内容。
我不知道出了什么问题
public class GameActivity extends Activity implements View.OnClickListener {
protected android.widget.ProgressBar ProgressBar;
String scoreStr;//Рекорд
int exScore;//Рекорд
long time1, time2, timefinal; //Переменные для принятия и отображения времени
private Calendar mStartTime;
int chislo1;
String chislo;
String btnarray1;//
int[] btnarray = new int[4];//4 разных числа для кнопок
int level = 0, answer = 0, operator = 0, operand1 = 0,
operand2 = 0;
int progress = 0;
private final int ADD_OPERATOR = 0, SUBTRACT_OPERATOR = 1,
MULTIPLY_OPERATOR = 2, DIVIDE_OPERATOR = 3;
private String[] operators = {"+", "-", "x", "/"};
private int[][] levelMin = {{1, 11, 21}, {1, 5, 10}, {2, 5, 10},
{2, 3, 5}};
private int[][] levelMax = {{10, 25, 50}, {10, 20, 30}, {5, 10, 15},
{15, 60, 120}};
private Random random;
private TextView question, answerTxt, scoreTxt;
private Button btn1, btn2, btn3, btn4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
time1 = System.currentTimeMillis();//Первая переменная для принятия времени
mStartTime = Calendar.getInstance();
final boolean paused = false;
final ProgressBar progressBar;
progress = 0;
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(200);//Макс знач
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
// Переносим сюда старый код
if (!paused) {
progress++;//Progress прибавление прогесса
progressBar.setProgress(progress);
if (progress > 199) {
proigral();
}
if (progress < progressBar.getMax()) {//До макс. значения прогресс бара
handler.postDelayed(this, 32);// Говорим Handler запустить эту функцию(this) через 0,65 сек.
}
}
}
};
Thread thread = new Thread(runnable);//Активация потока
thread.start();//Старт этого потока
answerTxt = (TextView) findViewById(R.id.textView2) ;
time1 = System.currentTimeMillis();//принятие текущего времени.
scoreTxt = (TextView) findViewById(R.id.score);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
btn4 = (Button) findViewById(R.id.btn4);
btn1.setOnClickListener(this);//Обработа нажатия для всех кнопок
btn2.setOnClickListener(this);//Обработа нажатия для всех кнопок
btn3.setOnClickListener(this);//Обработа нажатия для всех кнопок
btn4.setOnClickListener(this);//Обработа нажатия для всех кнопок
Bundle extras = getIntent().getExtras();
if (extras != null) {
int passedLevel = extras.getInt("level", -1);
if (passedLevel >= 0)
level = passedLevel;
}
random = new Random();//Переменная для рандома
chooseQuestion();//Вызвать создание примеров
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
}
@Override
public void onClick(View view) {
final Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);//Загрузка анимации
if (view.getId() == R.id.btn1) {
//we have an answer
if (btnarray[0] == answer) {
//correct
pravOtvet();//Метод при правильном ответе
} else {
//incorrect
btn1.startAnimation(shake);//Активация анимации
proigral();//Метод переходящий на другую активити
}
}
if (view.getId() == R.id.btn2) {
//we have an answe
if (btnarray[1] == answer) {
//correct
pravOtvet();//Метод при правильном ответе
} else {
//incorrect
btn2.startAnimation(shake);//Активация анимации
proigral();//Метод переходящий на другую активити
}
}
if (view.getId() == R.id.btn3) {
//we have an answer
if (btnarray[2] == answer) {
pravOtvet();//Метод при правильном ответе
} else {
btn3.startAnimation(shake);//Активация анимации
proigral();//Метод переходящий на другую активити
}
}
if (view.getId() == R.id.btn4) {
//we have an answer
if (btnarray[3] == answer) {
pravOtvet();//Метод при правильном ответе
} else {
btn4.startAnimation(shake);//Активация анимации
proigral();//Метод переходящий на другую активити
}
}
}
public void pravOtvet()//Метод при правильном ответе
{
exScore = getScore();
progress = 0;//Обнуление прогресса
//correct
scoreTxt.setText("Score: " + (exScore + 1));
chooseQuestion();//Вызвать создание примеров
}
private void chooseQuestion() {//СОЗДАНЕ РАНДОМНЫХ ПРИМЕРОВ
// get a questionСоздание примеров
operator = random.nextInt(operators.length);
operand1 = getOperand();
operand2 = getOperand();
if (operator == SUBTRACT_OPERATOR) {
while (operand2 > operand1) {
operand1 = getOperand();
operand2 = getOperand();
}
} else if (operator == DIVIDE_OPERATOR) {
while ((((double) operand1 / (double) operand2) % 1 > 0)
|| (operand1 == operand2)) {
operand1 = getOperand();
operand2 = getOperand();
}
}
switch (operator) {//Выбор оператора.
case ADD_OPERATOR:
answer = operand1 + operand2;
chislo1 = operand1 + operand2;
chislo = Integer.toString(chislo1);
randomFeed:
for (int i = 0; i < btnarray.length; ) {//создаем рандомные числа
int c = random.nextInt(4);
btnarray[i] = c + chislo1 - 1;
for (int j = 0; j < i; j++) {
if (btnarray[j] == btnarray[i]) {
continue randomFeed;
}
}
++i;
}
btn1.setText(Integer.toString(btnarray[0]));//Присваем кнопке 1 значение числа
btn2.setText(Integer.toString(btnarray[1]));//Присваем кнопке 1 значение числа
btn3.setText(Integer.toString(btnarray[2]));//Присваем кнопке 1 значение числа
btn4.setText(Integer.toString(btnarray[3]));//Присваем кнопке 1 значение числа
break;
case SUBTRACT_OPERATOR:
answer = operand1 - operand2;
chislo1 = (operand1 - operand2);
chislo = Integer.toString(chislo1);
randomFeed:
for (int i = 0; i < btnarray.length; ) {
int c = random.nextInt(4);
btnarray[i] = c + chislo1 - 1;
for (int j = 0; j < i; j++) {
if (btnarray[j] == btnarray[i]) {
continue randomFeed;
}
}
++i;
}
btn1.setText(Integer.toString(btnarray[0]));//Присваем кнопке 1 значение числа
btn2.setText(Integer.toString(btnarray[1]));//Присваем кнопке 1 значение числа
btn3.setText(Integer.toString(btnarray[2]));//Присваем кнопке 1 значение числа
btn4.setText(Integer.toString(btnarray[3]));//Присваем кнопке 1 значение числа
break;
case MULTIPLY_OPERATOR:
answer = operand1 * operand2;
chislo1 = (operand1 * operand2);
chislo = Integer.toString(chislo1);
randomFeed:
for (int i = 0; i < btnarray.length; ) {
int c = random.nextInt(4);
btnarray[i] = c + chislo1 - 1;
for (int j = 0; j < i; j++) {
if (btnarray[j] == btnarray[i]) {
continue randomFeed;
}
}
++i;
}
btn1.setText(Integer.toString(btnarray[0]));//Присваем кнопке 1 значение числа
btn2.setText(Integer.toString(btnarray[1]));//Присваем кнопке 1 значение числа
btn3.setText(Integer.toString(btnarray[2]));//Присваем кнопке 1 значение числа
btn4.setText(Integer.toString(btnarray[3]));//Присваем кнопке 1 значение числа
break;
case DIVIDE_OPERATOR:
chislo1 = operand1 / operand2;
chislo = Integer.toString(chislo1);
answer = operand1 / operand2;
randomFeed:
for (int i = 0; i < btnarray.length; ) {
int c = random.nextInt(4);
btnarray[i] = c + chislo1 - 1;
for (int j = 0; j < i; j++) {
if (btnarray[j] == btnarray[i]) {
continue randomFeed;
}
}
++i;
}
btn1.setText(Integer.toString(btnarray[0]));//Присваем кнопке 1 значение числа
btn2.setText(Integer.toString(btnarray[1]));//Присваем кнопке 1 значение числа
btn3.setText(Integer.toString(btnarray[2]));//Присваем кнопке 1 значение числа
btn4.setText(Integer.toString(btnarray[3]));//Присваем кнопке 1 значение числа
break;
default:
break;
}
question.setText(operand1 + " " + operators[operator] + " " + operand2);
int chisla = operand1 + operand2;
}
private int getOperand() {
// return operand number
return random.nextInt(levelMax[operator][level]
- levelMin[operator][level] + 1)
+ levelMin[operator][level];
}
private int getScore() {//Рекорд
scoreStr = scoreTxt.getText().toString();
return parseInt(scoreStr.substring(scoreStr.lastIndexOf(" ") + 1));
}
public void proigral() {
Calendar nowTime = Calendar.getInstance();
long secs = (nowTime.getTimeInMillis() - mStartTime.getTimeInMillis()) / 1000;
progress = 201;
Intent restartIntent;
restartIntent = new Intent(GameActivity.this, Restart.class);
restartIntent.putExtra("secs", String.valueOf(secs));
restartIntent.putExtra("scheat", Integer.toString(exScore));
startActivity(restartIntent);
}
}
致命异常:主进程:com.example.imatematik02,PID:10222 java.lang.RuntimeException:无法启动活动 ComponentInfo {com.example.imatematik02/com.example.imatematik02.GameActivity}:java.lang.NullPointerException:尝试在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread) 的空对象引用上调用虚方法'void android.widget.TextView.setText(java.lang.CharSequence)' .java:2387) 在 android.app.ActivityThread.access$800(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method。在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal 的 java.lang.reflect.Method.invoke(Method.java:372) 调用(本机方法)。 os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' 在 com 的空对象引用上.example.imatematik02.GameActivity。在 com.example.imatematik02.GameActivity.onCreate(GameActivity.java:104) 在 android.app.Activity.performCreate(Activity.java:5990) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation) 选择问题(GameActivity.java:277) .java:1106) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 在 android.app.ActivityThread.access$800(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method。在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal 的 java.lang.reflect.Method.invoke(Method.java:372) 调用(本机方法)。 os.ZygoteInit.main(ZygoteInit.java:698)ZygoteInit.main(ZygoteInit.java:698)ZygoteInit.main(ZygoteInit.java:698)
在老项目中,切换到GameActivyty类时,报错:
2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.imatematik02, PID: 5144
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.imatematik02/com.example.imatematik02.GameActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.imatematik02.GameActivity.chooseQuestion(GameActivity.java:171)
at com.example.imatematik02.GameActivity.onCreate(GameActivity.java:104)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
单击按钮后,您需要显示自创建 Activity 以来经过了多少时间。
是long timefinal
-传递给下一个Activity
的时间TextView
。
怎么做才对?