Почему моя кнопка ничего не делает?

103
14

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

import mun.pakkaus.aateekoo.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.util.Log;

public class CalorieCounter extends Activity
{
String GDA;
EditText tx, weightE, heightE, ageE;
TextView counter;
Spinner spin;
String gender;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button2 = (Button) findViewById(R.id.button2);
}

public OnClickListener button2 = new OnClickListener()
{
public void onClick(View arg0)
{
Intent nextScreen = new Intent(getApplicationContext(),
SecondScreenActivity.class);
nextScreen.putExtra("Gender", gender);
Log.e("n", gender);
startActivity(nextScreen);
}
};
}

и второе действие:

package my.pack.coursework;
import mun.pakkaus.aateekoo.*;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SecondScreenActivity extends Activity
{
public void OnCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.screen2);

Button button1 = (Button) findViewById(R.id.button1);

button1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0)
{
TextView counter;
Intent i = getIntent();
String gender = i.getStringExtra("gender");
Log.e("Second Screen", gender + ".");
counter = (TextView) findViewById(R.id.textView23);
int caloriesBurned = 0; int caloriesConsumed = 0;
EditText consumedE;
EditText burnedE;
String test1, test2;
test1 = getString(R.id.txtBurned);
test2 = getString(R.id.txtConsumed);
try
{
if (test1 != "" && test2 != "")
{
burnedE = (EditText) findViewById(R.id.txtBurned);
caloriesBurned = Integer.parseInt(burnedE.getText().toString().trim());
consumedE = (EditText) findViewById(R.id.txtConsumed);
caloriesConsumed = Integer.parseInt(consumedE.getText().toString().trim());

if(gender.contains("Male") && caloriesConsumed - caloriesBurned > 2000)
{
counter.setText("You are over your GDA of calories");
}
else
{
counter.setText("Don't add offensive text");
}
}
}
catch (Exception e)
{
System.out.println(e);
}
}
});
}
}

По сути, почему моя деятельность не переключается?

спросил(а) 2021-01-20T12:12:26+03:00 9 месяцев назад
1
Решение
65

Вы создали кнопку локально, так что она уничтожена после OnCreate(). Объявить глобально в классе и просто инициализировать в OnCreate().


Button button2; 

onCreate()
{
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(this);
}

public void onClick(View v)
{
if(v == button2)
{
}
}

ответил(а) 2021-01-20T12:12:26+03:00 9 месяцев назад
66

Вы не назначаете OnClickListener, вы просто создаете OnClickListener с тем же именем, что и ваш объект Button.

Правильный способ использования:

    ...
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(onClickListener);
}

public OnClickListener onClickListener = new ...

ответил(а) 2021-01-20T12:12:26+03:00 9 месяцев назад
47

button2.setOnClickListener отсутствует в работе CalorieCounter

ответил(а) 2021-01-20T12:12:26+03:00 9 месяцев назад
47

Если у вас есть проблема с OnclickListener, вы можете использовать этот метод: Внутри вашей деятельности xml.

<Button
.......
android:onClick="functionBt1"
........
/>

В вашем классе вы должны создать метод как одно и то же имя "functionBt1"

public void functionBt1(View v){
Intent i = new Intent(First.this,Second.class);
startActivity(i);
}

И помните, что оба действия в вашем AndroidManifest.xml

ответил(а) 2021-01-20T12:12:26+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема