可以啊。只要你有另一个类的实例,并且那个类的变量提供了类似set方法之类的,如果该变量是Public的,直接修改也可以。
⑵ Android中,如何在MainActivity中调用另外一个普通类中的某个方法里的某个变量
比如 public class Bean{
private String name="";
private static Bean bean;
public static Bean getInstance() {
if (bean == null) {
bean = new Bean();
}
return bean;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后在MainActivity里面把这个变量get出来
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String name=Bean. getInstance().getgetName();//这个name就是所求
}
}
⑶ android中可以调用方法中的变量吗
在另一个类里面给那个变量设置get 和set方法。一下均为手打,如有错误望指出 比如 public class Bean{ private String name=""; private static Bean bean; public static Bean getInstance() { if (bean == null) { bean = new Bean(); }
⑷ android使用全局变量.求解答@慈税。
使用静态类:
调用就不再写了,直接使用类名.变量名就可以调用!
static修饰的静态变量,使用很方便,在不同的类和包中都可以使用,在虚拟机中单独占用内存,没错,这些都是它们的优点,不过在项目上线后,才发现static有一些不太好的地方。
在查看项目的崩溃信息时,发现很多地方莫明的出现空指针异常的错误,经过排查,发现可能就是static的问题。我们在项目中,将用户的信息也就是User对象保存成了一个静态变量,而在报错的地方,也都发现有使用过这种变量,因此,可以大致推断出与这种保存的方式有一定的联系。同时,有不少用户反映在打开应用的情况下,接个电话或者长时间待机后,再回到应用也会出现崩溃的现象,而这些崩溃都与静态变量的空指针有关系。
如此来说的话,static静态修饰在Android的开发中是不是很危险?或许我们可以说如果是static User u = new User();这样定义的话,那么应该不会有太大问题,而如果是static User u;这样定义的话,那么很可以会出现NULL的现象。当然,前面的方法里面的属性也可能会现空的情况,但是这个可以用封装来避免空指针。另外静态常量还是很好用的。
那么应该如何保存登录或者全局的信息呢?根据Google官方的推荐以及网络到的各位大神的推荐,我们应该尽量使用继承自Application的自定义类,在我们继承的类中定义需要全局使用的变量,并通过getApplicationContext()来获取和保存相关的变量即可。
2.使用Application
不过,为了让我们的MyApplication取代android.app.Application的地位,在我们的代码中生效,我们需要修改AndroidManifest.xml:
下面我们就可以在Activity或Service中灵活使用了:
而且按照Java及C#的种编辑思想的话,还是建议使用第二种试,这样对于系统的安全是好的!而且我查了一些资料显示,这样也是符合Android这种思想的,因此建议使用第二种方式,设置公共变量!
Application是与应用同时存在的,也就是应用在它就在,并不会被GC给莫名其妙的回收掉,因此,使用此方法更加安全。
阅读全文
⑸ Android 如何在其他类里面获得MainActivity类的实例,从而引用MainActivity类里的变量
1一般来说,这样做是不好的.如果要这样做,说明你的设计存在一定的问题.
首先从面向对象设计来说,不应该直接引用其他类的变量,而只应该通过类的方法来完成对类的操作.
此外因为Activity生命周期的管理是由android framework来实现的,你难以确切知道MainActivity的状态,无法保证引用变量的有效性.
如果一定要这么做,你可以实现一个类似getInstance的静态方法,不过注意不能像单例设计模式那样,new 一个MainActivity,而是在onreate的时机给静态变量instance赋值.
⑹ 如何调用android.mk 中的变量
变量
1
LOCAL_PATH := $(call my-dir)
1、解释 LOCAL_PATH:
英文:如下图
中文:Android.mk 开始必须定义变量 LOCAL_PATH,它用来指定源文件的位置
2、解释 my-dir:
英文:如下图
中文:编译系统提供的'my-dir'宏函数,被用来获取当前的目录。
2
include $(CLEAR_VARS)
1、解释 CLEAR_VARS:
英文:如下图
中文:编译系统提供CLEAR_VARS变量,它指向了一个用来清除 LOCAL_ 开头的变量(LOCAL_PATH除外)的makefile文件,需要它的原因是整个的编译上下文中,所有的变量都是全局的,这样就可以保证这些变量只在局部范围内起作用;
3
LOCAL_MODULE := hello-jni
1、解释 LOCAL_MODULE:
英文:如下图
中文:每一个android.mk文件中都必须定义一个模块标示 LOCAL_MODULE , 这个名字必须是唯一的并且不包含任何的空格,编译系统将自动的修改生成文件的前缀和后缀,如一个模块为'foo'共享库将被改为'libfoo.so';
重要提示,如果你的模块名为'libfoo',编译系统生成的文件为 'libfoo.so', 而不会去再增加前缀,当你使用的时候,android平台会自动识别;
4
LOCAL_SRC_FILES := hello-jni.c
1、解释 LOCAL_SRC_FILES
英文:如下图
中文:LOCAL_SRC_FILES必须包含一系列的C/C++源文件,他们将会被建立和装载到模块中,注意你不应该把需要包含的头文件列在这里,因为建立系统将自动计算依赖项,只有源文件才能够被编译器识别;
2、解释 LOCAL_CPP_EXTENSION
英文:如下图
中文:注意默认的c++文件扩展名是'.cpp', LOCAL_CPP_EXTENSION可以用来指定不同类型的扩展名,不要忘了前面的点(如:'.cxx' 将起作用, 但是 'cxx'不会起作用).
如:LOCAL_CPP_EXTENSION := .cc .cpp
5
include $(BUILD_SHARED_LIBRARY)
1、解释 BUILD_SHARED_LIBRARY
英文:如下图
中文:‘建立系统’提供个变量 BUILD_SHARED_LIBRARY, 将根据在‘include’之前定义的所有的信息和LOCAL_前缀的变量,决定将建立什么,如何正确的生成共享库;
2、解释 BUILD_STATIC_LIBRARY
英文: 如下图
中文: 同上,只不过它生成的是静态库
6
LOCAL_C_INCLUDES := $(NDK_ROOT)/sources/third_party/freetype
1、解释 NDK_ROOT
中文:NDK_ROOT 代表的是ndk的根目录,如我的是“D:\Android\android-ndk-r10”,这个例子是用来加载ndk根目录下的freetype的头文件路径;
7
LOCAL_LDFLAGS := \
$(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libfreetype.a
1、解释 LOCAL_LDFLAGS
中文:用来加载用户自己的静态库(.a文件)
2、解释 TARGET_ARCH_ABI
中文:当前的cpu/abi的类型,在链接不同类型的CPU_ABI时非常有用,如下图
8
$(call import-add-path,$(LOCAL_PATH)/libsrc)
1、解释:import-add-path
中文:增加自己的路径到 NDK_MODULE_PATH 环境变量中,再非ndk根目录/sources下编译时会用到
9
LOCAL_SRC_FILES := hello-jni.c HelloJni.cpp
$(error $(LOCAL_SRC_FILES))
1、解释:$
中文:变量前面加上"$"用来返回变量的值
2、解释:$(error string)
中文:用来将string所对应的内容打印到控制台,并且android.mk文件停止继续进行编译,如下图
10
LOCAL_SRC_FILES := hello-jni.c HelloJni.cpp
$(warning $(LOCAL_SRC_FILES))
1、解释:$(warning string)
中文:用来将string所对应的内容打印到控制台,并且android.mk文件将继续进行编译,如下图
11
LOCAL_PRELINK_MODULE := false
1、解释 LOCAL_PRELINK_MODULE:
中文:关闭编译器链接前进行代码优化,防止将没有用到的代码不添加到生成的库中
12
LOCAL_EXPORT_CFLAGS := -DFOO=1
1、解释 LOCAL_EXPORT_CFLAGS
定义这个变量来记录一些列的 c/c++编译标志,他们将会增加到其他的使用这个模块的LOCAL_CFLAGS中,LOCAL_CFLAGS的功能相当于:LOCAL_STATIC_LIBRARIES 和 LOCAL_SHARED_LIBRARIES 这两个变量;
13
LOCAL_STATIC_LIBRARIES := foo
1、解释 LOCAL_STATIC_LIBRARIES
链接进来一个静态库的模块,这里是静态库的模块的名称,而不是静态库的名称
14
LOCAL_SHARED_LIBRARIES
链接进来一个动态库的模块,这里是动态库的模块的名称,而不是静态库的名称
15
LOCAL_EXPORT_CPPFLAGS
跟 LOCAL_EXPORT_CFLAGS 的功能一样,但是它只能够在c++中使用
16
LOCAL_EXPORT_C_INCLUDES
跟 LOCAL_EXPORT_CFLAGS,但是对于c的 include路径,被调用模块申明后,使用模块可以很方便的使用包含的路径
17
LOCAL_EXPORT_LDFLAGS
跟LOCAL_EXPORT_CFLAGS的作用一样,但是仅仅是链接选项
18
LOCAL_EXPORT_LDLIBS
跟LOCAL_EXPORT_CFLAGS的作用类似,但是这个变量说明的系统库,需要带上 '-l' 前缀,他们将导入链接器选项,并追加到你的模块的 LOCAL_LDLIBS
19
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
允许未定义的符号
20
LOCAL_CFLAGS
.c文件对应的编译标记变量
21
LOCAL_LDLIBS
用来链接共享库(so)或者执行文件,使用系统的库文件的时候,需要加上前缀 '-l',例如下面的例子,将告诉连接器生成的模块的时候同时链接 /system/lib/libz.so
LOCAL_LDLIBS := -lz
注意:如果你在一个模块中链接一个静态库,这个静态库是不会起作用的,同时ndk-build 会打印出一条警告消息
22
LOCAL_CFLAGS := -fvisibility=hidden
隐藏库函数名
23
LOCAL_PROGUARD_ENABLED默认是打开的,不特别指定的话,就是起作用的,就可能做优化。
LOCAL_PROGUARD_ENABLED:= disabled
⑺ Android 调用访问类的函数
android调用访问类的函数的方式,和java相同。
如果该类非静态类,则需要声明一个对象,然后初始化对象,对象.函数的方式调用函数。
如果该类是静态类,则直接可以使用 类.函数 的方式,调用函数。
至于什么是静态类,非静态类,只要看类名的前面是否有关键字static
⑻ android如何调用另一个类中的自定义的变量
你定义a为一个局部变量肯定是不行的,你可以将a声明为一个私有的类的属性如:private boolean a;然后在两个方法里分别对其修改 这样应该可以满足你的需求了
⑼ android 全局变量怎么使用
全局变量怎么使用?说法太模糊了,如果你是要声明一个全局变量,假设有一个类,你只要在类成员变量声明即可,例如:我声明一个int 类型的变量为10:private int number=10; 你可以在该类中方法内调用它(比如用来做加减乘除),也可以重新赋值给它(number=XX, XX必须是int类型,否则可能需要强转)。
⑽ android同一个工程下不同java里的变量怎么相互调用
一般不带你这么直接调用的吧,你看看javaBean就知道了,为什么javaBean里面的属性都是private的类型,外部调用的话需要统一一个set、get方法这样保证数据的安全性
如果实在需要用的话你可以把a变量的数值放到request范围里,然后你直接从request里面取就行了
(如果上面的这些class类只是你写着玩的,那就无所谓了,你直接写死一个值好了,如果你的这个是web工程的话你可以使用上面的方法进行取值,可以通过context或者page或者request或者session等进行取值,这个scope定义域内的数据都是共享的)
如:application.setAttribute("A",a);
request.setAttribute("A",a);
session.setAttribute("A",a);
或者你把值放到集合里面,把集合放到context、page、request、session里都可以
这个是在做项目的时候规范的用法
如果你怕麻烦也是写着玩。要么写死值,要么你实例化上面的那个类
GALLERYgal=newgallery();
inta=gal.a;//这个就是实例变量,是你通过gallery类实例化得来的,如果是静态的变量或者静态的方法也可以不用实例化直接调用变量即可