片段更改后,我的全局变量变空。我跟着其他人的帖子走了几步,但我仍然无法得到它。任何人都可以解释并帮助我解决这个问题吗?
GlobalClass.java
public class GlobalClass extends Application{
private static String firstName;
private static String middleName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
}
活动Java
我使用以下方式存储:
GlobalClass globalVariable = new GlobalClass();
globalVariable.setFirstName(fName.getText().toString());
我也尝试将我的GlobalClass名称放在我的Manifest上,但仍然没有发生
<application android:name=".GlobalClass">
答案 0 :(得分:1)
这是错误的:
GlobalClass globalVariable = new GlobalClass();
globalVariable.setFirstName(fName.getText().toString());
Android会负责创建您在Application
中定义的<application android:name=".GlobalClass">
的一个实例。对你而言,那将是GlobalClass
。
然后,您只需要执行此操作即可访问一个共享Application
:
(GlobalClass)context.getApplication
无论如何,如果您需要访问应用程序的生命周期,则只应扩展Application
。在这种情况下,你不应该。你最好创建一个简单的singleton:
public class GlobalClass{
private static GlobalClass globalClass;
private GlobalClass() {
}
public static Logger getInstance() {
if (globalClass == null) {
globalClass = new GlobalClass();
}
return globalClass;
}
}
然后,像这样使用它:
GlobalClass.getInstance();
答案 1 :(得分:0)
发送您的数据需要将其放入putExtra中,您可以通过执行此操作的片段来执行此操作
从活动中,您可以将数据发送到Fragment
Bundle bundle=new Bundle();
bundle.putString("message", "From Activity");
//set Fragmentclass Arguments
Fragmentclass fragobj=new Fragmentclass();
fragobj.setArguments(bundle);
请记住,message
是您的关键,&#34;来自活动&#34;是消息的内容,因此您可以更改&#34;来自活动&#34;使用fName.getText().toString()
,您将在其他片段中获得以下内容..
并在Fragment onCreateView
中获取它@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext=getArguments().getString("message");
return inflater.inflate(R.layout.fragment, container, false);
}
从片段到活动的规范,您应该这样做以获取变量内容
Intent intent = new Intent(getActivity().getBaseContext(),
TargetActivity.class);
intent.putExtra("message", message);
getActivity().startActivity(intent);
并在您的活动中获取此值
Intent intent = getIntent();
String message = intent.getStringExtra("message");
基本上你可以这样做来放置一个值并检索它
输入值
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);
使用putInt
或任何您想要的内容更改putString
在你的其他片段中检索它
Bundle bundle = this.getArguments();
if (bundle != null) {
int i = bundle.getInt(key, defaulValue);
}
希望它有所帮助!
答案 2 :(得分:0)
我遇到了同样的问题,我只是在声明变量时声明了静态并解决了。
public class GlobalVClass extends Application {
//static added here
public static String ReturnValue;
public String getReturnValue() {
return ReturnValue;
}
public void setReturnValue(String returnValue) {
ReturnValue = returnValue;
}
}