android其他类怎么调用继承自activity的类(mainactivity)中的非静态方法?
publicclassMainActivityextendsActivity{privateMainActivity(){};privatestaticMainActiv...
public class MainActivity extends Activity{
private MainActivity(){};
private static MainActivity mainActivity;
public static MainActivity getmainActivity(){
mainActivity=new MainActivity();
return mainActivity;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button dailButton= (Button) findViewById(R.id.bt_call);
dailButton.setOnClickListener(new Mylistener());
}
}
public class Mylistener implements OnClickListener {
@Override
public void onClick(View v) {
MainActivity mActivity=MainActivity.getmainActivity();
EditText telEditText=(EditText)mActivity.findViewById(R.id.et_telNum);
String number=telEditText.getText().toString();
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
mActivity.startActivity(intent);
}
}
着了监听类我不想把它放在mainActivity类的内部,但是在外部调用mainActivity的方法时还得new对象而且new出来的也不是同一个对象。能不能设计成单例的呢?这样好像编译不通过,有没有别的办法 展开
private MainActivity(){};
private static MainActivity mainActivity;
public static MainActivity getmainActivity(){
mainActivity=new MainActivity();
return mainActivity;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button dailButton= (Button) findViewById(R.id.bt_call);
dailButton.setOnClickListener(new Mylistener());
}
}
public class Mylistener implements OnClickListener {
@Override
public void onClick(View v) {
MainActivity mActivity=MainActivity.getmainActivity();
EditText telEditText=(EditText)mActivity.findViewById(R.id.et_telNum);
String number=telEditText.getText().toString();
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
mActivity.startActivity(intent);
}
}
着了监听类我不想把它放在mainActivity类的内部,但是在外部调用mainActivity的方法时还得new对象而且new出来的也不是同一个对象。能不能设计成单例的呢?这样好像编译不通过,有没有别的办法 展开
2个回答
展开全部
据我所知没亩的Activity机制,Activity不是由你来new对象出来的,而是由android系统创建枯凳森对象的。Activity与Activity之间只能通过广播来通讯。非Activity类不可能直接粗慧调用Activity对象方法。本来监听类本来就是被监听对象所在容器的私有专属组件,没道理放类外。
当然,你非要把Mylistener放类外也不是绝对不行。这样修改:
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button dailButton= (Button) findViewById(R.id.bt_call);
dailButton.setOnClickListener(new Mylistener(this));
}
}
public class Mylistener implements OnClickListener {
private MainActivity mainActivity;
public Mylistener(MainActivity activity){
this.mainActivity=activity;
}
@Override
public void onClick(View v) {
EditText telEditText=(EditText)mainActivity.findViewById(R.id.et_telNum);
String number=telEditText.getText().toString();
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
mainActivity.startActivity(intent);
}
}
展开全部
1,这个其它类不是从Activity继承而来,穗搭轿所以想通过MainActivity类(继承自猜肆Activity类,所以有一些方法可以直接使用,因为它遵守ANDROID下的一些框架)的方法来做一些事情。像发广播消息什么的。
2,MainActivity类在开始就被ONCREATE( )了,所以应该已枝雀经实例化了,但在其它类中怎么引用?怎么去getInstance把MainActivity的实例得到
3,在其它类直接MainActivity.this.xxx( )这样引用不行,报下面的错误:
No enclosing instance of the type MainActivity is accessible in scope.
2,MainActivity类在开始就被ONCREATE( )了,所以应该已枝雀经实例化了,但在其它类中怎么引用?怎么去getInstance把MainActivity的实例得到
3,在其它类直接MainActivity.this.xxx( )这样引用不行,报下面的错误:
No enclosing instance of the type MainActivity is accessible in scope.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询