Кнопка в заголовке как до нее добраться

При создании заголовка с кнопкой, которая является общей для всех действий, например. строка заголовка, созданная в tabactivities. как можно добраться до кнопки во всех дополнительных действиях ??

public class tabActivity extends TabActivity  implements OnClickListener{
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    c = this;
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.tabactivity);

    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("Settings",
            res.getDrawable(R.drawable.preferences)).setContent(
                    new Intent(this, Settings.class)));

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("About",
            res.getDrawable(R.drawable.newspaper)).setContent(
                    new Intent(this, About.class)));

Здесь я инициализирую свои вкладки и пользовательский заголовок с кнопками.

И в этом классе я хотел бы получить доступ к кнопкам в пользовательском заголовке.:

public class About extends Activity 
{
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.about);

    ImageView imag = (ImageView) findViewById(R.id.Position);
    imag.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("heeey");
        }
    });

}

Слушатель не работает??

Ооо это возможно??


person Jacksons    schedule 26.01.2012    source источник
comment
Я перепостил подробности в исходном посте. посмотри там и попробуй.   -  person lulumeya    schedule 26.01.2012


Ответы (2)


public class Android_templateActivity extends Activity
{
private static OnClickListener listener;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    View v = new View(this);

    v.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Android_templateActivity.listener.onClick(v);
        }
    });
}

public static void setListener(View.OnClickListener listener)
{
    Android_templateActivity.listener = listener;
}
}

это основная деятельность

public class aaa extends Activity implements OnClickListener
{
@Override
protected void onResume()
{
    Android_templateActivity.setListener(this);
    super.onResume();
}

@Override
public void onClick(View v)
{
    // TODO Auto-generated method stub

}
}

это субактивность

person lulumeya    schedule 26.01.2012
comment
Я сделал это точно так же. Но мне интересно, где вы объявляете конкретную кнопку для прослушивания ?? в примере, который я привел, это была R.id.position?? куда бы вы это поместили.. я очень новичок в андроиде.. - person Jacksons; 26.01.2012
comment
в приведенном выше коде View v = new View(this); эта строка должна быть такой строкой, которая находит вашу кнопку, объявленную в вашем макете. xml line button = findViewById(R.id.btn) blah blah.. - person lulumeya; 27.01.2012

Сделайте реферат Activity следующим образом:

public abstract class MyAbsActivity extends Activity {
    abstract public void buttonClickedInTab();
}

Затем расширьте обе дочерние Activity вкладок с помощью MyAbsActivity, затем вам нужно переопределить метод buttonClickedInTab().

При переопределении метода поместите свою логику для обоих действий. например, ваш About с buttonClickedInTab() должен выглядеть так:

public class About extends MyAbsActivity {

    //onCreate() etc here

    @Override
    public void buttonClickedInTab() {
        //Your logic to do action for About
    }

}

Повторите это для других SettingActivity.

Теперь в вашем TabActivity, где вы обрабатываете событие кнопки заголовка onClick()

public void onClick(View v)
{
    MyAbsActivity activity = (MyAbsActivity)getLocalActivityManager().getCurrentActivity();
    activity.buttonClickedInTab(); // it will inform the current activity
}
person Adil Soomro    schedule 26.01.2012