【发布时间】:2015-09-23 20:01:10
【问题描述】:
我知道这个问题已经有很多答案,但我仍然无法处理这个概念。
找到here 的答案显示:
如果您不想使用全局变量,您总是可以在您的活动中创建一个方法来返回您的字符串。
public String getMyString(){
return item; }
然后在您当前的活动中,您可以调用:
String myValue = LoginScreen.getMyString();
当我尝试此方法时,我收到一条错误消息,提示“无法从静态上下文引用非静态方法”。但是,如果我将方法设为静态,则表示我的变量需要是静态的,但我需要更新变量。我将在下面包含我的代码。
第一个活动 -
btnSEARCH.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (editTextSearch.getText().toString() != null) {
SearchQueryTerm = editTextSearch.getText().toString();
editTextSearch.setText("");
}
}
});
public String getMyString(){
return SearchQueryTerm;
}
第二个活动-
String SearchQueryTerm = MainActivity.getMyString();
非常感谢您在这方面给我的任何帮助。非常感谢!!
这是我更新的代码 - 但是它仍然崩溃:(
活动一
public void sendMessageIntent(View view) {
Intent search_intent = new Intent(this, SearchActivity.class);
api_intent.putExtra("my_variable", SearchQueryTerm);
startActivity(search_intent);
}
xml文件
<Button
android:id="@+id/button_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="View"
android:onClick="sendMessageIntent"
/>
活动 2 -
public String SearchQueryTerm
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_variable);
if (extras != null) {
SearchQueryTerm = extras.getString("my_variable");
}
}
【问题讨论】:
-
你试过getter和setter方法吗?这样您就可以创建说: setString(SearchQueryTerm);然后在第二个活动中调用 String newString = new MainActivity.getString();如果您不熟悉 getter / setter 方法,请告诉我,我可以尝试更好地解释。
-
我想知道你到底想要达到什么目的。你想开始一个新的活动并传递你的搜索查询吗?然后你应该按照here 的建议使用 Intent。如果要使用静态字段,则字段和方法都必须是静态的。您的 Activity 的所有实例都将共享同一个静态变量。
-
大家好,非常感谢你们的 cmets。无论哪种方式,我都会研究 getter 和 setter 方法,非常感谢!!为了回答您的问题,我正在尝试启动一个新活动以返回在线数据库的查询结果,因为由于某种原因,同一活动中的 Web 视图对我来说无法正常工作。输入值(因此它不能是静态的),发送到第二个活动,然后使用该值查询数据库