Попытка намерения и сбой приложения

#android #android-intent

#Android #android-намерение

Вопрос:

Я пытаюсь создать намерение, которое связывает кнопку с классом (определение намерения). Проблема в том, что, когда я нажимаю эту кнопку, все происходит сбой. Я думаю, что проблема в классе intent. Вы видите, что не так? Я пытаюсь открыть диалоговое окно с предупреждением при нажатии кнопки bet. Я уже создал его:

Класс чипов, класс, который ИИ хочет использовать после нажатия кнопки:

 public class Chips extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);
}


private AlertDialog.Builder dialog;
public void scommessa () {

    dialog = new AlertDialog.Builder(this);
    final EditText txtInput = new EditText (this);
    final String stringInput = txtInput.getText().toString();
    dialog.setTitle("Welcome to poker");
    dialog.setMessage("Player 2, place your bet!");
    dialog.setView(txtInput);
    dialog.setPositiveButton("Bet", new Dialog.OnClickListener(){

        @Override
        public void onClick(DialogInterface dialog, int which) {
            int bet1 = 100;
            int intInput = Integer.parseInt(stringInput);
            int newPlayer1Bet = bet1 - intInput;
            String total1 = ""   newPlayer1Bet;

        }
    });
    dialog.setNegativeButton("Pass", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which){
            Toast.makeText(getApplicationContext(), "Player 2 won", Toast.LENGTH_SHORT).show();;
        }
    });
    AlertDialog dialogPoker = dialog.create();
    dialogPoker.show();
    }

    public void onClick(View v){
        switch (v.getId()){
        case R.id.Cover1:
            scommessa();
            break;
        }
    }
}
  

Тогда вот класс, в котором я определил кнопку, а затем попытался вызвать класс Chips:

     final Button Cover1 = (Button) findViewById(R.id.Cover1);
final Button button1 = (Button) findViewById(R.id.A);
final Button button2 = (Button) findViewById(R.id.B);
final Button button3 = (Button) findViewById(R.id.C);
final Button button4 = (Button) findViewById(R.id.D);
final Button button5 = (Button) findViewById(R.id.E);
final Button Bet = (Button) findViewById(R.id.button1);
Cover1.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v){
        if(v.equals(Cover1)){
                        button1.setBackgroundResource(R.drawable.back);
                        button2.setBackgroundResource(R.drawable.back);
                        button3.setBackgroundResource(R.drawable.back);
                        button4.setBackgroundResource(R.drawable.back);
                        button5.setBackgroundResource(R.drawable.back);
                                }
                            }
                        });
                        button1.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View x){
                if(x.equals(Bet)){
                Intent intent1 = new Intent(GameActivity.this, Chips.class);
                startActivity(intent1);
                Chips chip = new Chips();
                chip.scommessa();
                }
                Intent intent1 = new Intent(GameActivity.this, Chips.class);
                                    //startActivity(intent1);
                    Chips chip = new Chips();
                chip.scommessa();
                }
                });
  

Вот манифест:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.pokeroriginal"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.pokeroriginal.FullscreenActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="GameActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.pokeroriginal.GameActivity"
        android:label="@string/title_activity_game" 
        android:screenOrientation="landscape" 
        android:theme="@android:style/Theme.NoTitleBar">
    </activity>

    <activity

        android:name= "com.example.pokeroriginal.Chips"
        android:label= "@string/Bet" 
        android:screenOrientation= "landscape" 
        android:theme= "@android:style/Theme.NoTitleBar">

    </activity>
 </application>

</manifest>
  

Также activity_game.xml где определены все кнопки:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/green_table_cloth"
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=".GameActivity" >

<LinearLayout
    android:id="@ id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:orientation="horizontal" >

    <Button
        android:id="@ id/Cover1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cover"
        android:onClick="onClickChips" />


    <Button
        android:id="@ id/A"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:onClick="onClick"
        android:background="@drawable/back"
        />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>

    <Button
        android:id="@ id/B"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:background="@drawable/back"
        />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>

    <Button
        android:id="@ id/C"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:background="@drawable/back"
        />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>

    <Button
        android:id="@ id/D"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:background="@drawable/back"
        />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" >
    </View>

    <Button
        android:id="@ id/E"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="40dp"
        android:onClick="onClick"
        android:background="@drawable/back"
        />

    <View
        android:layout_width="0dp"
        android:layout_height="0dp" >
    </View>
</LinearLayout>

<ImageSwitcher
    android:id="@ id/imageSwitcher1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@ id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick(View x)"
        android:text="@string/Bet" />

    <Button
        android:id="@ id/Button01"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Bet" />

</ImageSwitcher>

<LinearLayout
    android:id="@ id/linearLayout2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="60dp"
    android:orientation="horizontal" >

    <Button
        android:id="@ id/Cover2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cover" />

    <Button
        android:id="@ id/A2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:background="@drawable/back2" />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" />

    <Button
        android:id="@ id/B2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/back2" />

    <View
        android:layout_width="0dp"
        android:layout_height="10dp"
        android:layout_weight="1" />

    <Button
        android:id="@ id/C2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/back2" />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" />

    <Button
        android:id="@ id/D2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/back2" />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" />

    <Button
        android:id="@ id/E2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:background="@drawable/back2" />

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" />

    <!--    <ImageView 
        android:id="@ id/Image" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </ImageView> '
     -->
</LinearLayout>

<Button
    android:id="@ id/button2"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Bet" />

</LinearLayout>
  

Комментарии:

1. Можете ли вы опубликовать свой журнал ошибок и манифест тоже?

2. Да, конечно, посмотрите обновление через 30 секунд

3. Ошибка в основном заключается в сбое всего приложения, когда я нажимаю кнопку Bet

Ответ №1:

Трудно определить, что это за ошибка, не видя logcat — вам действительно следует включить ее в будущем.

Глядя на ваш код, я замечаю это в button1 OnClickListener:

 Intent intent1 = new Intent(GameActivity.this, Chips.class);
startActivity(intent1);
Chips chip = new Chips();
chip.scommessa();
  

Чтобы начать другое действие, все, что вам нужно сделать, это:

 Intent intent1 = new Intent(GameActivity.this, Chips.class);
startActivity(intent1);
  

Я считаю, что попытка создать экземпляр Activity с помощью его конструктора вызывает проблемы. Когда вы делаете это, представления активности не были настроены должным образом, и при попытке отобразить диалоговое окно вы столкнетесь с ошибками.
Попробуйте удалить эти строки:

 Chips chip = new Chips();
chip.scommessa();
  

Ваш OnClickListener должен выглядеть следующим образом:

 button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View x) {
        if (x.equals(Bet)) {
            Intent intent1 = new Intent(GameActivity.this, Chips.class);
            startActivity(intent1);
        }
    }
});
  

Ответ №2:

Я думаю, что здесь вы получаете исключение NullPointerException.

  if(x.equals(Bet))
  

и ваш xml onClick() реализован неправильно.

 <Button
    android:id="@ id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClick(View x)"
    android:text="@string/Bet" />
  

код Java должен быть таким,

     final Button Cover1 = (Button) findViewById(R.id.Cover1);
final Button button1 = (Button) findViewById(R.id.A);
final Button button2 = (Button) findViewById(R.id.B);
final Button button3 = (Button) findViewById(R.id.C);
final Button button4 = (Button) findViewById(R.id.D);
final Button button5 = (Button) findViewById(R.id.E);
final Button Bet = (Button) findViewById(R.id.button1);

Cover1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v){
       button1.setBackgroundResource(R.drawable.back);
       button2.setBackgroundResource(R.drawable.back);
       button3.setBackgroundResource(R.drawable.back);
       button4.setBackgroundResource(R.drawable.back);
       button5.setBackgroundResource(R.drawable.back);
      }
    });

  Bet.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View arg0) {
        Chips chip = new Chips();
        chip.scommessa();
        Intent intent1 = new Intent(GameActivity.this, Chips.class);
        startActivity(intent1);
    }
  });
  

Или, если вы используете xml, реализация должна быть такой.

  <Button
    android:id="@ id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="NavigateToChips"
    android:text="@string/Bet" />
  

и вы должны реализовать метод onClick () в действиях, подобных этому,

 public void NavigateToChips(View v) {
    Chips chip = new Chips();
    chip.scommessa();
    Intent intent1 = new Intent(GameActivity.this, Chips.class);
    startActivity(intent1);
}
  

Ответ №3:

В вашем файле XML-макета я вижу атрибут android:onClick="onClickChips" для компонента с идентификатором as android:id="@ id/Cover1" . Следовательно, код Java обычно ищет метод с именем onClickChips() , тогда как вы использовали setOnClickListener() Cover1 кнопку for .

Решение: либо удалите атрибут ( android:onClick="onClickChips" ) из вашего XML, либо удалите setOnClickListener() для этой кнопки. Сохраняйте только один.