3

有谁知道为什么这个程序不会显示吐司信息?

public class Main extends Activity implements OnClickListener{
/** Called when the activity is first created. */


  ImageButton x = (ImageButton) findViewById(R.id.imageButton1);
  ImageButton i = (ImageButton) findViewById(R.id.imageButton2);
  ImageButton question = (ImageButton) findViewById(R.id.imageButton3);

我已经创建了一些 ImageButons 和其他元素并创建了 onClick 函数

public void onClick(View v) {
            if(v.getId() == R.id.button1) // this works 
            {
                Intent intent = new Intent(this, Second.class);
                intent.putExtra("thetext", et1.getText().toString());
                intent.putExtra("thesize", et2.getText().toString());
                startActivity(intent);
            }
            if(v.getId() == R.id.imageButton2) // this wont work 
            {
                Toast toastI = Toast.makeText(this, "Testing", 5000);
                toastI.setGravity(Gravity.CENTER, 0, 0);
                toastI.show();
            }

当我单击 ImageButton i(在我运行程序后)时,吐司不会显示?

4

5 回答 5

1

希望你已经在 imagebuttons 上设置了 onclickListener ..

  i.setOnClickListener(this);

尝试这个

Toast.makeText(getApplication(), "Testing", 5000).show();
于 2012-06-23T16:40:01.900 回答
0

尝试使用switchcase 代替if并使用Main.thisorgetApplicationContext()代替thisas:

public void onClick(View v) {

switch (v.getId()) {
    case R.id.button1:
    Intent intent = new Intent(Main, Second.class);
            intent.putExtra("thetext", et1.getText().toString());
            intent.putExtra("thesize", et2.getText().toString());
            startActivity(intent);
    break;
    case R.id.imageButton3:
        Toast toastI = Toast.makeText(Main.this, "Testing", 5000);
        toastI.setGravity(Gravity.CENTER, 0, 0);
        toastI.show();
    break;
 }
}
于 2012-06-23T17:00:18.650 回答
0

我认为您的问题是将 5000 放在吐司的长度上。LENGTH_LONGLENGTH_SHORT的值为 1 和 0,因此它们用作标志。所以我不知道如果你放 5000(可能什么都没有)会发生什么。同样在java doc上,他们说你应该放or or other。所以使用其中一种。

public static Toast makeText (Context context, CharSequence text, int duration) 自:API 级别 1 制作仅包含文本视图的标准 toast。

参数 context 要使用的上下文。通常是您的 Application 或 Activity 对象。text 要显示的文本。可以是格式化文本。duration 显示消息的时间。LENGTH_SHORT 或 LENGTH_LONG

于 2012-06-23T17:28:23.707 回答
0

static Toast makeText(Context context, int resId, int duration)

问题是您将5000作为第三个参数传递给该方法。int duration不是将向用户显示秒数(或毫秒) 。Toast该类Toast要求您仅传递两个可能的值(这是有道理的,因为否则开发人员将完全滥用 toast 消息的长度,并且 Android 市场上的应用程序在向用户显示消息的方式上将完全不一致)。这两个值是:

Toast.LENGTH_SHORT 
Constant Value: 0 (0x00000000) 

或者

Toast.LENGTH_LONG`
Constant Value: 1 (0x00000001)

要解决此问题,请将方法调用更改为,

Toast.makeText(this, "Testing", Toast.LENGTH_LONG).show();

另外,请记住将您的设置onClickListener放在您ImageButton的 s 上(只是在黑暗中拍摄)。

于 2012-06-23T18:00:22.950 回答
0

首先实现 View.OnClickListener 接口并向每个图像按钮添加侦听器,如下所示:

x.setOnClickListener(this);

  • 对于 toast 消息,代码 mjst 是这样的:

Toast.makeText(Main.this,"把你的信息放在这里",Toast.LENGTH_LONG).show();

于 2018-04-20T19:27:54.430 回答