Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Activity2的按钮更改Activity1的actionBar标题_Java_Android - Fatal编程技术网

Java 如何从Activity2的按钮更改Activity1的actionBar标题

Java 如何从Activity2的按钮更改Activity1的actionBar标题,java,android,Java,Android,我正在尝试在activity2(设置页面)中创建一个按钮,当单击该按钮时,activity1(MainActivity)的标题将更改为我设置的标题。我一直试图使用接口来执行该函数,但它给了我一个空指针异常错误 主要活动 @Override public void changeActionBarTitle(String editText){ actionTitle = editText; setTitle(actionTitle); }; 接口 p

我正在尝试在activity2(设置页面)中创建一个按钮,当单击该按钮时,activity1(MainActivity)的标题将更改为我设置的标题。我一直试图使用接口来执行该函数,但它给了我一个空指针异常错误

主要活动

@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";
        }
    });
}