Java 如何从Activity2的按钮更改Activity1的actionBar标题
我正在尝试在activity2(设置页面)中创建一个按钮,当单击该按钮时,activity1(MainActivity)的标题将更改为我设置的标题。我一直试图使用接口来执行该函数,但它给了我一个空指针异常错误 主要活动Java 如何从Activity2的按钮更改Activity1的actionBar标题,java,android,Java,Android,我正在尝试在activity2(设置页面)中创建一个按钮,当单击该按钮时,activity1(MainActivity)的标题将更改为我设置的标题。我一直试图使用接口来执行该函数,但它给了我一个空指针异常错误 主要活动 @Override public void changeActionBarTitle(String editText){ actionTitle = editText; setTitle(actionTitle); }; 接口 p
@Override
public void changeActionBarTitle(String editText){
actionTitle = editText;
setTitle(actionTitle);
};
接口
public interface ActionBarInterface {
void changeActionBarTitle(String editText);
}
设置页面(活动2)
谢谢。它给出了一个
空指针异常错误
,因为操作界面
未初始化
查看有关“从活动中获取结果”的主题,使用类和函数,如Intent
,startActivityForResult
,onActivityResult
您可以在不使用界面的情况下尝试此代码 主要活动:
@Override
protected void onResume() {
setTitle(Main2Activity.title);
super.onResume();
}
活动2:
public class SettingsPage extends AppCompatActivity {
Button editCompanyNameButton;
static String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
setTitle("Settings");
editCompanyNameButton = findViewById(R.id.editCompanyNameButton);
editCompanyNameButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
title = "test";
}
});
}
}我尝试了这一行“actionBarInterface=(actionBarInterface)getActivity”;但它不是一个选项。我还尝试创建一个静态方法,所以我想我可以从另一个类调用它,但是它说了一些类似于非静态的东西,我记不起来了,它太长了。或者有一种简单的方法可以做到这一点吗?即使您成功地获得了对
main活动的引用
,当当前活动现在是SettingsPage
,如何触发setTitle
?使用Intent
,.putExtra()
类和函数在活动之间传递信息。另一种选择是保存到共享首选项,然后再检索。这就像一个符咒。我甚至没有想到我可以尝试从activity2获取字符串。谢谢
public class SettingsPage extends AppCompatActivity {
Button editCompanyNameButton;
static String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
setTitle("Settings");
editCompanyNameButton = findViewById(R.id.editCompanyNameButton);
editCompanyNameButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
title = "test";
}
});
}