从另一个类调用MainActivity中的setTitle()方法

时间:2014-12-09 11:48:04

标签: android

我想从另一个班级更改主要活动的标题栏。 在第二节课中,我检查输入的用户名和密码是否正确(在线检查)。

现在,如果输入正确,我想更改标题栏以包含用户名。

问题是方法“setTitle()”不是静态的,因此不能从第二类调用。

我可以在主要活动中更改静态变量,但是我该如何检查更改?

我也可以为这个变量设置setter,但它必须是静态的,所以不能从那里调用“setTitle()”。

感谢您的帮助

此致

2 个答案:

答案 0 :(得分:2)

您应该使用自定义标题。

你可以试试这个。

这是mytitle.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:orientation="horizontal" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent"
android:layout_height="match_parent">

    <TextView
        android:id="@+id/Kredi"
        style="@style/litleTitleStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_alignParentRight="true" />
</RelativeLayout>

这是main.java

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
TextView krdTxt = (TextView) findViewById(R.id.Kredi);
krdTxt.settext("This is title Text");

您可以在第一或第二类中使用此代码

答案 1 :(得分:1)

在主活动类中,您可以创建一个像这样的函数

private void setapptitle(String s){
    this.setTitle(s);
}

然后在主活动类中创建一个这样的处理程序(在主活动类下面给出的代码是MainActivity)并将此处理程序传递给您想要设置应用程序标题的其他类或线程

 Handler handler = new Handler(){


            @Override
            public void handleMessage(Message msg) {

                final String title = (String) msg.obj;
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        setapptitle(title);
                    }
                });
                super.handleMessage(msg);
            }
        };

然后您可以从已将此处理程序传递到的其他线程或类将消息对象发送到此处理程序。这个小片段可以完成所需的

Message msg = Message.obtain();
msg.obj = your_required_string();
handler.sendMessage(msg);