タブ付きアクティビティ内でアクティビティを起動する方法を学ぶために、今朝過去 3 時間検索しました。
これまでのところ、タブ付きアクティビティを使用する必要があり、オンラインで複数の例を見つけました。
ただし、コピーして貼り付けても、どれも機能しません!
layout/main.xml 内の textview 要素を参照している場合、タブを切り替えることができます。問題ありません。ただし、TabActivity クラスにリンクしているタブをクリックするとすぐにクラッシュします。
これが私が使用しているコードです:
最初のクラスは、タブを作成する main.java であり、FirstGroup.class をロードする意図があります。 FirstGroup.java は、CitiesActivity.java を開く ActivityGroup です。
都市の活動はすべて、画面上にテキストを印刷するだけです
package com.carbonaware.guigps;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
public class main extends TabActivity{
public TabHost tabHost;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get the tabHost
this.tabHost = getTabHost();
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch the first Activity for the tab (to be reused)
intent = new Intent();
intent.setClass(this, FirstGroup.class);
// Initialize a TabSpec for the first tab and add it to the TabHost
tabHost.addTab(tabHost.newTabSpec("FirstGroup").setIndicator("FirstGroup").setContent(R.id.textview1));
tabHost.addTab(tabHost.newTabSpec("SecondGroup").setIndicator("SecondGroup").setContent(R.id.textview2));
tabHost.addTab(tabHost.newTabSpec("ThirdGroup").setIndicator("ThirdGroup").setContent(R.id.textview3));
tabHost.addTab(tabHost.newTabSpec("FourthGroup").setIndicator("FourthGroup").setContent(intent));
tabHost.setCurrentTab(0);
}
}
package com.carbonaware.guigps;
import java.util.ArrayList;
import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
public class FirstGroup extends ActivityGroup {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//you can get the local activitymanager to start the new activity
View view = getLocalActivityManager()
.startActivity("CitiesActivity", new
Intent(this,CitiesActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
this.setContentView(view);
}
}
package com.carbonaware.guigps;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class CitiesActivity extends Activity{
// Data to put in the ListAdapter
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
TextView t = (TextView)findViewById(R.string.hello);
}
}
どんな助けでも大歓迎です!