android其他类怎么调用继承自activity的类(mainactivity)中的非静态方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android其他类怎么调用继承自activity的类(mainactivity)中的非静态方法?相关的知识,希望对你有一定的参考价值。
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出来的也不是同一个对象。能不能设计成单例的呢?这样好像编译不通过,有没有别的办法
据我所知的Activity机制,Activity不是由你来new对象出来的,而是由android系统创建对象的。Activity与Activity之间只能通过广播来通讯。非Activity类不可能直接调用Activity对象方法。本来监听类本来就是被监听对象所在容器的私有专属组件,没道理放类外。
当然,你非要把Mylistener放类外也不是绝对不行。这样修改:
@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);
参考技术A 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.
两个 Activity
创建新的Activity的方式:
1. 在相应的文件下 Ctrl + N (Eclipse, Android中不知道是不是)
2. 创建类,继承自Activity或者Activity的子孙类, 并在AndroidManifast.xml 中注册, 创建样式文件, 在setContentView()方法中调用这个样式文件
激活一个新的Activity:
Intent intent = new Intent(上下文对象, 被激活的对象的class);
startActivity(intent);
当第二个Activity 激活时, 第一个Activity隐藏
Activity_01.onPause()
Acitvity_02.onCreate()
Activity_02.onStart()
Activity_02.onResume()
Activity_01.onStop()
Activity的启动模式:
注:
1. 不同的布局文件中id 是可以相同的
以上是关于android其他类怎么调用继承自activity的类(mainactivity)中的非静态方法?的主要内容,如果未能解决你的问题,请参考以下文章
AndroidManifest.xml中android:name功能介绍 利用自定义类继承Application 可以实现全局变量功能