gpt4 book ai didi

android - fragment 菜单未打开新 Activity

转载 作者:行者123 更新时间:2023-11-30 03:32:11 24 4
gpt4 key购买 nike

请检查下面的代码

    @SuppressWarnings("deprecation")
public class AndroidTabLayoutActivity extends TabActivity implements OnTabChangeListener {
TabHost tabHost;
TabWidget tabWidget;
Menu menu;
View v;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabWidget = getTabWidget();
tabHost = getTabHost();
tabHost.setOnTabChangedListener(this);

TabSpec eventbyspec = tabHost.newTabSpec("EventBy");
// eventbyspec.setIndicator("EventBy",
// getResources().getDrawable(R.drawable.icon_photos_tab));
eventbyspec.setIndicator("EventBy");
Intent eventbyIntent = new Intent(this, MainActivity.class);
eventbyspec.setContent(eventbyIntent);

// Tab for category
TabSpec categoryspec = tabHost.newTabSpec("Category");
categoryspec.setIndicator("Category");
Intent categoryIntent = new Intent(this, CatagoryEvent.class);
categoryspec.setContent(categoryIntent);


// Adding all TabSpec to TabHost
tabHost.addTab(eventbyspec); // Adding eventby tab
tabHost.addTab(categoryspec); // Adding category tab
}


@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
int tab = getTabHost().getCurrentTab();

if (tab==1)
inflater.inflate(R.menu.menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {
case R.id.music:
// Single menu item is selected do something
// Ex: launching new activity/screen or show alert message
Intent music_intent = new Intent(getApplicationContext(),MusicFragment.class);
startActivity(music_intent);
return true;
case R.id.theatre:
Intent music_intent = new Intent(getApplicationContext(),TheatreFragment.class);
startActivity(music_intent);
return true;

default:
return super.onOptionsItemSelected(item);
}
}

}

MusicFragment.java 在哪里

                public class MusicFragment extends Fragment implements OnClickListener {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.music_layout, container, false);
LinearLayout mLayout = (LinearLayout) v
.findViewById(R.id.catagory_linearlayout);

mLayout.setBackgroundResource(R.drawable.music_full);
TableLayout tableLayout = (TableLayout) v.findViewById(R.id.maintable);
tableLayout.removeAllViews();
for (int i = 0; i < 50; i++) {

TableRow tableRow = new TableRow(v.getContext());
tableRow.setPadding(10, 10, 10, 10);
tableRow.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

TextView tv = new TextView(v.getContext());
tv.setTextColor(getResources().getColor(R.color.black_overlay));

tv.setText("random text here 11");


tableRow.addView(tv);

tv.setOnClickListener(this);


tableLayout.addView(tableRow, new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

}
return v;
}

public void onClick(View arg0) {
startActivity(new Intent(getActivity(), TextActivity.class));
}

}

我的 CatagoryEvent.java 是

    public class CatagoryEvent extends FragmentActivity {

SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.catagory_layout);

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}

public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
Fragment fragment;
switch (position) {
case 0:
fragment = new MusicFragment();
break;
case 1:
fragment = new TheatreFragment();
break;
default:
fragment = null;
break;
}
return fragment;

}
@Override
public int getCount() {
// Show 3 total pages.
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString("Music");
case 1:
return getString("Theatre");

}
return null;
}
}
}

问题

问题是点击菜单项 MusicFragment.java 没有被调用并要求在androidmanifaste中声明但不能在 androidmanifaste 上声明它

有什么方法可以从 Activity 中调用 fragment 类吗?

最佳答案

不,你不能。如果您查看自己的代码,就会发现问题所在:您使用“startActivity”来启动 fragment 。

Fragment 需要托管在 Activity 中才能存活。但是,您可以将此 Fragment 包装到一个空的 Activity 中,然后从您的 onClick 调用该 Activity。

关于android - fragment 菜单未打开新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17269835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com