0

アクティビティにボタンを追加しようとしています。ボタンは見えますが、押しても何も起こりません。コードは以下のとおりです。

ありがとう、ナフム

Manifest.xml:

<Button android:layout_gravity="bottom" android:layout_weight="1" android:text="Next"   android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/w_button_next"></Button>

Java:

private Button b3;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.wizard);
    b3 = (Button) findViewById(R.id.w_button_next);
    b3.setOnClickListener(new NextClicked());


}
class NextClicked implements Button.OnClickListener {

 public void onClick(View v) {

       Context context = v.getContext();//getApplicationContext();
       CharSequence text = "On Click";
       int duration = Toast.LENGTH_LONG;
       Toast toast = Toast.makeText(context, text, duration);
       toast.show();
    GotoNextState();
}
}
4

3 に答える 3

0

Button.OnClickListener を実装するのではなく、 View.OnClickListener を使用できると思います

于 2011-06-29T15:03:29.063 に答える
0

たくさんのボタンがあり、全員の意見を聞きたい場合は、最初のソリューションを実装します。ボタンが 1 つしかない場合は、Mark Allisonのコードを使用できます。

public class YourActivity extends Activity implements OnClickListener{
private Button b3;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.wizard);
    b3 = (Button) findViewById(R.id.w_button_next);
    b3.setOnClickListener(this);


}
 @Override
 public void onClick(View v) {

       CharSequence text = "On Click";
       int duration = Toast.LENGTH_LONG;
       Toast toast = Toast.makeText(this, text, duration);//i 've changed the context with :this
       toast.show();
    GotoNextState();
}
}
于 2011-06-29T15:06:09.647 に答える
0

Context ルックアップの問題である可能性があります。私は常に親アクティビティへの参照を使用します (つまり、NextClicked内部クラスのエンクロージング クラス):

class ParentActivity extends Activity
{
    private Button b3;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.wizard);
        b3 = (Button) findViewById(R.id.w_button_next);
        b3.setOnClickListener( new View.OnClickListener() {
            public void onClick(View v) {
                Toast toast = Toast.makeText(ParentActivity.this, "On Click", Toast.LENGTH_LONG).show();
                toast.show();
                GotoNextState();
            }
        });
    }
    private void GotoNextState() {
        // Do something.
    }
}
于 2011-06-29T14:46:23.540 に答える