0

私はこのコードを持っています:

package com.app.BoomBase;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class CheckList extends Activity{
ImageButton bAddBoom, bAddTools, bAddCloth, bRemoveBoom, bRemoveTools, bRemoveCloth;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.check_list);
    final LinearLayout llBooms = (LinearLayout) findViewById(R.id.llBooms);
    ImageButton bAddBoom = (ImageButton) findViewById(R.id.bAddBoom);


    bAddBoom.setOnClickListener(new View.OnClickListener() {

        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            AlertDialog alert = new AlertDialog.Builder(CheckList.this).create();
            final EditText input = new EditText(CheckList.this); 
            alert.setTitle("Name of category?");
            alert.setView(input);
            alert.setButton("OK", new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int which) {
                     String userin = input.getText().toString();
                     if(userin != null){
                        return; 
                        }
                        else{   
                        for(int i = 0; i < 1; i++) {
                            CheckBox cb1 = new CheckBox(getBaseContext());
                            cb1.setText(userin+i);
                            cb1.setId(i+1);
                            llBooms.addView(cb1);
                        }
                        }

                    }
                });
                alert.show(); 
            alert.setButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                }

                });

        }
    });
}

}

そして、チェックボックスに変数「userin」の名前を付ける方法がわかりません..誰か助けてもらえますか? 別の質問: コードで新しく作成されたチェックボックスをどのように処理すれば、コンテンツがチェックされているかどうかを確認できますか?

ありがとう !

4

1 に答える 1

1

@ラッセ、

Android プログラミングの理解には、先に進む前に埋めなければならない「ギャップ」がいくつかあります。誰かが実際にあなたに答えたとしても、アプリにコードを追加すると、数分後に同じ問題が再び発生するため、間違いなく役に立ちません。

この答えで気分を害したくはありませんが、あなたの質問は基本的に次のとおりです。Androidで何かをデバッグするにはどうすればよいですか? 問題は、一部のコードが実行されるかどうか、およびその理由を知ることであり、プログラミング時に常にこれをチェックする方法を理解する必要があります。

したがって、次のことを行う必要があります。

  • デバッガーの使い方を学びます。Android では、プログラムをデバッグし、変数や式などの値にアクセスして行ごとに実行することで、コードがどのように実行されるかを確認できます。
  • 基本的にLog.x()あなたが行ったように使用するだけでなく、変数値を出力したり、条件付きコードの分岐をチェックしたりすることによって、プログラムをトレースする方法を学びます。
  • ドキュメントを読むことを学びます。setButton(...)SDK 3で廃止されたメソッドを実際に使用しています(実際のバージョンは17です...)。この読み方を学びましょう。
  • IDE 内の警告に従い、それらをすべて削除して、アプリの品質を向上させてください。
  • Lint を使用すると、アプリの潜在的な問題についてさらに多くのアドバイスが得られます。繰り返しになりますが、プログラムを作成するときに Lint 警告が発生しないようにしてください。リリース時にはさらに注意してください。

これはあなたに答えを与えるよりも良いアドバイスです。

それにもかかわらず、ここで問題には2つの原因が考えられます:

  • プログラムでsetButtonを2回使用すると、最初のリスナーがオーバーライドされます。
  • 維持されていない非推奨の API を使用する。それを置き換える新しい方法を試してみると、うまくいくはずです。
于 2013-06-02T20:45:16.490 に答える