Toast未显示-Android

Toast未显示-Android,android,toast,Android,Toast,我已经尝试了很多方法来展示我想要的祝酒词(在DrawView课堂上),我真的不知道该往哪里跑了 显然这很简单,但我遗漏了一些东西。我看过其他相关的帖子,但没有成功 有什么想法吗 import android.app.Activity; import android.os.Bundle; public class MyActivity extends Activity{ DrawView drawView; @Override protected void onCr

我已经尝试了很多方法来展示我想要的祝酒词(在DrawView课堂上),我真的不知道该往哪里跑了

显然这很简单,但我遗漏了一些东西。我看过其他相关的帖子,但没有成功

有什么想法吗

import android.app.Activity;
import android.os.Bundle;


public class MyActivity extends Activity{

    DrawView drawView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        drawView = new DrawView(this);
        setContentView(drawView);

    }

}
DrawView类:

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;


public class DrawView extends View implements View.OnTouchListener{

    Paint paint = new Paint();

    public DrawView(MyActivity myActivity) {
        super(myActivity);

        setBackgroundColor(Color.WHITE);
        paint.setColor(Color.BLACK);

    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvas.drawText("I'm text in a canvas!", 10, 10, paint);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        if(event.getAction() == MotionEvent.ACTION_DOWN){

            Toast.makeText(getContext(),"I'm a Toast!",Toast.LENGTH_SHORT).show();

        }

        return false;

    }

}

您可以尝试从以下位置更改代码:

Toast.makeText(getContext(),“我是一个Toast!”,Toast.LENGTH\u SHORT.show()

致:


Toast.makeText(getApplicationContext(),“我是土司!”,Toast.LENGTH\u SHORT.show()

您可以尝试从以下位置更改代码:

Toast.makeText(getContext(),“我是一个Toast!”,Toast.LENGTH\u SHORT.show()

致:


Toast.makeText(getApplicationContext(),“我是土司!”,Toast.LENGTH\u SHORT.show()

您在传递活动时,请将其用作上下文。

您在传递活动时,请将其用作上下文。

更改代码如下

Context _context;
public DrawView(MyActivity myActivity,Context context) {
        super(myActivity);

        _context=context;
        setBackgroundColor(Color.WHITE);
        paint.setColor(Color.BLACK);

    }
并使用
\u上下文显示
Toast

Toast.makeText(_context,"I'm a Toast!",Toast.LENGTH_SHORT).show();

将当前的
上下文也作为参数传递给类。

如下更改代码

Context _context;
public DrawView(MyActivity myActivity,Context context) {
        super(myActivity);

        _context=context;
        setBackgroundColor(Color.WHITE);
        paint.setColor(Color.BLACK);

    }
并使用
\u上下文显示
Toast

Toast.makeText(_context,"I'm a Toast!",Toast.LENGTH_SHORT).show();

将当前的
上下文
也作为参数传递给类。

Toast not apper不是上下文引用问题,它是关于触摸事件的问题。您应该像这样更改DrawView类

public class DrawView extends View  {

Paint paint = new Paint();
Context _MyActivity;

public DrawView(Context myActivity) {
    super(myActivity);
    this._MyActivity = myActivity;
    setBackgroundColor(Color.GREEN);
    paint.setColor(Color.BLACK);

}

@Override
protected void onDraw(Canvas canvas) {

    canvas.drawText("I'm text in a canvas!", 10, 10, paint);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        // do something
        Toast.makeText(_MyActivity, "I'm a Toast!", Toast.LENGTH_SHORT)
        .show();
        break;
    case MotionEvent.ACTION_MOVE:
        // do something
        break;
    case MotionEvent.ACTION_UP:
       //do something
        break;
}
return true;
}



}
public class MyActivity extends Activity implements OnTouchListener {

DrawView drawView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     drawView = new DrawView(this);
        setContentView(drawView);
        drawView.setOnTouchListener(this);
}



@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    return false;
}

}
你的活动课是这样的

public class DrawView extends View  {

Paint paint = new Paint();
Context _MyActivity;

public DrawView(Context myActivity) {
    super(myActivity);
    this._MyActivity = myActivity;
    setBackgroundColor(Color.GREEN);
    paint.setColor(Color.BLACK);

}

@Override
protected void onDraw(Canvas canvas) {

    canvas.drawText("I'm text in a canvas!", 10, 10, paint);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        // do something
        Toast.makeText(_MyActivity, "I'm a Toast!", Toast.LENGTH_SHORT)
        .show();
        break;
    case MotionEvent.ACTION_MOVE:
        // do something
        break;
    case MotionEvent.ACTION_UP:
       //do something
        break;
}
return true;
}



}
public class MyActivity extends Activity implements OnTouchListener {

DrawView drawView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     drawView = new DrawView(this);
        setContentView(drawView);
        drawView.setOnTouchListener(this);
}



@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    return false;
}

}
您不希望在DrawView.class中实现OnTouchListener


希望这将帮助您

祝酒词不出现不是上下文参考问题,它与您有关的是触摸事件问题。您应该像这样更改DrawView类

public class DrawView extends View  {

Paint paint = new Paint();
Context _MyActivity;

public DrawView(Context myActivity) {
    super(myActivity);
    this._MyActivity = myActivity;
    setBackgroundColor(Color.GREEN);
    paint.setColor(Color.BLACK);

}

@Override
protected void onDraw(Canvas canvas) {

    canvas.drawText("I'm text in a canvas!", 10, 10, paint);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        // do something
        Toast.makeText(_MyActivity, "I'm a Toast!", Toast.LENGTH_SHORT)
        .show();
        break;
    case MotionEvent.ACTION_MOVE:
        // do something
        break;
    case MotionEvent.ACTION_UP:
       //do something
        break;
}
return true;
}



}
public class MyActivity extends Activity implements OnTouchListener {

DrawView drawView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     drawView = new DrawView(this);
        setContentView(drawView);
        drawView.setOnTouchListener(this);
}



@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    return false;
}

}
你的活动课是这样的

public class DrawView extends View  {

Paint paint = new Paint();
Context _MyActivity;

public DrawView(Context myActivity) {
    super(myActivity);
    this._MyActivity = myActivity;
    setBackgroundColor(Color.GREEN);
    paint.setColor(Color.BLACK);

}

@Override
protected void onDraw(Canvas canvas) {

    canvas.drawText("I'm text in a canvas!", 10, 10, paint);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        // do something
        Toast.makeText(_MyActivity, "I'm a Toast!", Toast.LENGTH_SHORT)
        .show();
        break;
    case MotionEvent.ACTION_MOVE:
        // do something
        break;
    case MotionEvent.ACTION_UP:
       //do something
        break;
}
return true;
}



}
public class MyActivity extends Activity implements OnTouchListener {

DrawView drawView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     drawView = new DrawView(this);
        setContentView(drawView);
        drawView.setOnTouchListener(this);
}



@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    return false;
}

}
您不希望在DrawView.class中实现OnTouchListener


希望这对您有所帮助

它给了我一个错误:“无法解析方法'getApplicationContext()'”这不是getApplicationContext()的适当用法。您可以尝试
Toast.makeText('your activity')。这是“我是一个Toast!”,Toast.LENGTH\u SHORT.show()它给了我一个错误:“无法解析方法'getApplicationContext()'”这不是getApplicationContext()的适当用法。您可以尝试
Toast.makeText('your activity')。这是“我是一个Toast!”,Toast.LENGTH\u SHORT.show()看一下这个。看一下这个。很乐意帮助….:):)很乐意帮忙……:):)