startActivity在自定义控件(RadioButton)中不起作用

时间:2011-10-26 11:14:39

标签: android custom-controls android-intent jradiobutton

我有一个自定义的RadioButton类,我将它放在Activity1上。我正在使用它的事件“onClick”来打开另一个Activity2。以下是代码:

public class custom_radiobutton extends RadioButton{

    Paint myPaint = new Paint();
    private Context cont;

    public custom_radiobutton(Context context) {
        super(context);
        cont = context;
    }

    public custom_radiobutton(Context context, AttributeSet attrbs) {
        super(context, attrbs);
        cont = context;
    }

    @Override
    protected void onDraw (Canvas canvas) {
        super.onDraw(canvas);
        String myText = (String) getText();
        canvas.drawText(myText, 10, 10, myPaint);
        this.setOnClickListener(radio_listener);
    }   

      OnClickListener radio_listener = new OnClickListener() {
      public void onClick(View v) 
      {

          try
          {
               Intent intent = new Intent("com.moftak.db.ImageActivity"); 
               // next line do nothing..
           getContext().startActivity(intent); 

               // next line also not works
               //cont.startActivity(intent); 
          }
          catch(Exception ex)
          {
              Log.d("Image", "Error: "+ex.toString());
          }
      } 
    };
}

修改 问题是“getContext()。startActivity(intent);”这一行正在抛出错误:

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.moftak.db.ImageActivity (has extras) }

有人可以帮忙吗?

感谢您宝贵的时间和救命。

4 个答案:

答案 0 :(得分:2)

请接受我的道歉,我发现了问题(非常大的错误,对不起),未在AndroidManifest.xml中指定Activity2

答案 1 :(得分:1)

尝试使用此cont.startActivity(intent);

答案 2 :(得分:1)

那是因为你的getContext()方法正在返回你的RadioButton的Context,而不是你的活动的上下文(来自radiobutton的构造函数)。试试cont.startActivity(..

另外,在使用RadioButton的构造函数时,请尝试传递活动本身的实例(在活动内部,使用this而不是getApplicationContext())。

答案 3 :(得分:0)

尝试以下代码

Intent intent = new Intent(custom_radiobutton.this ImageActivity.class); 
               // next line do nothing..
           getContext().startActivity(intent);