Android Toast没有弹出

时间:2014-04-04 04:09:31

标签: java android eclipse

我的问题陈述::> 我有一个按钮,一个文本字段,我想在文本字段中输入并单击按钮后弹出一个Toast。 但是,在输入并单击按钮后,吐痰不会弹出。相反,应用程序关闭。 如果我删除文本字段,吐司就会出来。

所以我认为,给我错误的是文本字段。

这是我在java :::

中的文本字段的代码
    public String getMyString(){

    EditText edit1=(EditText) findByViewId(R.id.editText1);
    String string1 = edit1.getText().toString();
    return string1;

    }

我将把它作为:::

返回给onClick方法
        public void onClick(View view){
        String string = getMyString();
        Toast.makeText(this, string,Toast.LENGTH_SHORT).show(); 
        }

在我的editText XML文件中

       <EditText
        android:id="@+id/editText1"
        android:labelFor="@id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="38dp"
        android:ems="10"
        android:inputType="text"
       />

这是我第二天学习日食,所以我会欣赏较少的技术术语。我希望你们可以帮助我,因为我试着谷歌,但我真的不懂任何东西...... XD谢谢。

10 个答案:

答案 0 :(得分:1)

尝试使用给定的代码,使用YoursActivity.this代替this

 public void onClick(View view){
    String string = getMyString();
    Toast.makeText(YoursActivity.this, string,Toast.LENGTH_SHORT).show(); 
    }

答案 1 :(得分:1)

您必须在按钮单击之前初始化edittext。因此,输入的文本可以在按钮单击时检索。现在将发生空指针异常。所以请尝试那样

将它放入oncreate

    EditText edit1=(EditText) findByViewId(R.id.editText1);

答案 2 :(得分:0)

    public void onClick(View view){
    String string = getMyString();
    Toast.makeText(getApplicationContext(), string,Toast.LENGTH_SHORT).show(); 
    }

答案 3 :(得分:0)

试试这个..这会对你有帮助..

public void onClick(View view){
    String string = getMyString();
    Toast.makeText(classname.this, string,Toast.LENGTH_SHORT).show(); 
    }

答案 4 :(得分:0)

试试这个: -

public void onClick(View view){
    String string = getMyString();
    Toast.makeText(YoursActivity.this, string,Toast.LENGTH_SHORT).show(); 
    }

确保您的按钮已实现为OnclickListener。

答案 5 :(得分:0)

交叉检查您是否在OnClickListener下放置toast。那么,请试试这个。

public void onClick(View view){
String string = getMyString();
Toast toast=Toast.makeText(MainActivity.this, string , Toast.LENGTH_SHORT);
toast.show();

答案 6 :(得分:0)

this始终引用当前对象,因此在onClick()方法中,this指的是您已实现的侦听器。

Toast的makeText()方法接受参数为makeText(Context context, CharSequence text, int duration)

您可以在此处传递上下文值

  • getApplicationContext()
  • getBaseContext()或通过提供
  • ActivityName.this如下所示,

    public void onClick(View view)
    {
         String string = getMyString();
         Toast.makeText( getApplicationContext(), string,Toast.LENGTH_SHORT).show(); 
         //Toast.makeText( getBaseContext(), string,Toast.LENGTH_SHORT).show(); 
         //Toast.makeText( ActivityName.this, string,Toast.LENGTH_SHORT).show(); 
    }
    

答案 7 :(得分:0)

确保您的Activity(或Fragment)正在实现OnClickListener接口

public class MyActivity implements View.OnClickListener { ... 

然后,将textview的监听器设置为当前活动

edit1.setOnClickListener(this);

最后,请确保您按照此处的许多用户的建议使用此参考的活动:

@Override
public void onClick(View view){
    String string = getMyString();
    Toast.makeText(MyActivity.this, string,Toast.LENGTH_SHORT).show(); 
}

答案 8 :(得分:0)

你可以这样做。在Toast中使用getActivity()。

public void onClick(View view){
String string = getMyString();
Toast toast=Toast.makeText(getActivity(), string , Toast.LENGTH_SHORT);
toast.show(); }

答案 9 :(得分:0)

试试这个:

   public void onClick(View view){
    String string = getMyString();
    Toast.makeText(YourActivityName.this, string,Toast.LENGTH_SHORT).show(); 
    }