#java #android #eclipse #multithreading #android-intent
#java #Android #eclipse #многопоточность #android-намерение
Вопрос:
Я пытаюсь создать приложение, в котором при нажатии кнопки, в данном случае кнопки b1, вызывается тост, который принимает число из входных данных и поджаривает текст строки из текстового поля.Я получил несколько ошибок ниже logcat.
MainActivity.java
package com.x.losey;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.net.NetworkInterface;
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) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
final Button b = (Button) (findViewById(R.id.Button2));
final Button b1 = (Button) (findViewById(R.id.button));
final EditText txt = (EditText) (findViewById(R.id.editText));
final EditText num = (EditText) (findViewById(R.id.editText2));
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
boolean a1 ;
Intent first = new Intent(MainActivity.this,second.class);
Toast.makeText(MainActivity.this, "OK" , Toast.LENGTH_SHORT).show();
startActivity(first);
}
});
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
int i;
int n;
n = Integer.parseInt(String.valueOf(num));
while(n!=0) {
String ab = txt.getText().toString();
Toast.makeText(MainActivity.this, ab, Toast.LENGTH_SHORT).show();
n--;
}
}
});
return true;
}
}
activity_main.xml
<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"
android:gravity="right"
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" >
<!--<TextView-->
<!--android:id="@ id/txtview1"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_centerHorizontal="true"-->
<!--android:layout_gravity="top"-->
<!--android:text="@string/LoseY"-->
<!--android:textSize="25sp"-->
<!--android:textStyle="bold" />-->
<Button
android:id="@ id/Button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/desbtn"
android:onClick=""
android:text="@string/btn1"
android:textColor="#FFFF"
android:textSize="50sp"
android:typeface="monospace" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@ id/editText"
android:layout_gravity="top"
android:hint="@string/enter" android:layout_alignRight="@ id/button"
android:layout_alignEnd="@ id/button" android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" android:height="50dp" android:textSize="28sp"/>
<Button
android:id="@ id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@ id/Button2"
android:layout_alignLeft="@ id/Button2"
android:layout_alignParentEnd="true"
android:layout_marginBottom="40dp"
android:background="@drawable/desbtn"
android:fontFamily="@string/btn1"
android:gravity="center"
android:height="79dp"
android:text="@string/showMe"
android:textColor="#ffff9b80"
android:textSize="35sp"
android:textStyle="bold" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:hint="@string/input"
android:id="@ id/editText2" android:layout_below="@ id/editText" android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" android:layout_marginTop="46dp"
android:layout_alignRight="@ id/editText" android:layout_alignEnd="@ id/editText"
/>
</RelativeLayout>
При нажатии кнопки = b1 я получаю всплывающее окно, но только 4 или 2 раза, когда я удаляю n, затем вместо этого я добавляю значение, после чего я получаю правильный вывод.
И что это за ошибка Logcat?
07-04 21:53:56.709 17773-17773/com.x.losey W/ResourceType﹕ No package identifier when getting value for resource number 0x0000005d
07-04 21:53:56.710 17773-17773/com.x.losey D/AndroidRuntime﹕ Shutting down VM
07-04 21:53:56.710 17773-17773/com.x.losey W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4165ed40)
07-04 21:53:56.712 17773-17773/com.x.losey E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.x.losey, PID: 17773
android.content.res.Resources$NotFoundException: String resource ID #0x5d
at android.content.res.Resources.getText(Resources.java:244)
at android.widget.Toast.makeText(Toast.java:268)
at com.x.losey.MainActivity$2.onClick(MainActivity.java:65)
at android.view.View.performClick(View.java:4456)
at android.view.View$PerformClick.run(View.java:18462)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
07-04 21:53:58.084 17773-17773/com.x.losey I/Process﹕ Sending signal. PID: 17773 SIG: 9
07-04 21:53:59.709 18458-18458/com.x.losey I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:385>: EGL 1.4 QUALCOMM build: ()
OpenGL ES Shader Compiler Version: E031.24.00.01
Build Date: 12/11/13 Wed
Local Branch: 8226workspace
Remote Branch:
Local Patches:
Reconstruct Branch:
07-04 21:53:59.735 18458-18458/com.x.losey D/OpenGLRenderer﹕ Enabling debug mode 0
07-04 21:53:59.844 18458-18458/com.x.losey E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-04 21:53:59.844 18458-18458/com.x.losey E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-04 22:00:06.784 18458-18458/com.x.losey W/ResourceType﹕ No package identifier when getting value for resource number 0x0000005d
07-04 22:00:06.784 18458-18458/com.x.losey D/AndroidRuntime﹕ Shutting down VM
07-04 22:00:06.784 18458-18458/com.x.losey W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4165ed40)
07-04 22:00:06.788 18458-18458/com.x.losey E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.x.losey, PID: 18458
android.content.res.Resources$NotFoundException: String resource ID #0x5d
at android.content.res.Resources.getText(Resources.java:244)
at android.widget.Toast.makeText(Toast.java:268)
at com.x.losey.MainActivity$2.onClick(MainActivity.java:65)
at android.view.View.performClick(View.java:4456)
at android.view.View$PerformClick.run(View.java:18462)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invo`enter code here`ke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
07-04 22:00:08.438 18458-18458/com.x.losey I/Process﹕ Sending signal. PID: 18458 SIG: 9
Комментарии:
1. Logcat сообщает, что вы передали целое число в Toast.maketest .. . но данный код передает строку, вы уверены, что это действие, генерирующее ошибку?
2. Да .. Можете ли вы сказать мне, как сохранить значение, введенное пользователем в inputText?
3. что вы подразумеваете под хранилищем?
4. Как сохранить введенное пользователем значение в целочисленной переменной?
5. Это строка «n = Integer.parseInt(String.valueOf(num));», вы пытаетесь преобразовать текст редактирования в целое число.
Ответ №1:
Измените MainActivity на:
private Button b;
private Button b1;
private EditText txt;
private EditText num;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.Button2);
b1 = (Button) findViewById(R.id.button);
txt = (EditText) findViewById(R.id.editText);
num = (EditText) findViewById(R.id.editText2);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
boolean a1 ;
Intent first = new Intent(MainActivity.this,second.class);
Toast.makeText(MainActivity.this, "OK" , Toast.LENGTH_SHORT).show();
startActivity(first);
}
});
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
int i;
int n;
n = Integer.parseInt(String.valueOf(num));
while(n!=0)
{
String ab = txt.getText().toString();
Toast.makeText(MainActivity.this, ab, Toast.LENGTH_SHORT).show();
n--;
}
}
});
}
@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;
}
}