我正在使用标签来执行项目。我收到以下错误。 android.support.v4.app.FragmentTransaction中的attach(android.support.v4.app.Fragment)无法应用于(com.outdeh.EventsFragment)。
package com.outdeh;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.content.Context;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseObject;
import com.parse.PushService;
public class EventsFragment extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState){
// Parse.initialize(this, "nSXPAwYG29VZMaCkasdjhakhsdkjsahdhj", "PWeiawu25r7sAmOYdgP0kajhsdkahaskjdhashj");
// ParseObject testObject = new ParseObject("TestObject");
//testObject.put("foo", "bar new");
//testObject.saveInBackground();
}
public EventsFragment() {
//Required empty public constructor
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout for this fragment
return inflater.inflate(R.layout.event_fragment, container, false);
}
}
package com.outdeh;
import com.outdeh.R;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.app.FragmentActivity;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TabHost;
import android.support.v4.app.Fragment;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.PushService;
import com.parse.ParseInstallation;
public class MainActivity extends FragmentActivity {
TabHost tHost;
@Override
public void onCreate(Bundle savedInstanceState) {
//Push notifications
Parse.initialize(this, "nSXPAwYG29VZMdfsddfsdfsdfdselz", "PWeiawu25r7sAmOYddfdsfsdfsdfssVkSJJEWU");
PushService.setDefaultPushCallback(this, MainActivity.class);
ParseAnalytics.trackAppOpened(getIntent());
// Save the current Installation to Parse.
ParseInstallation.getCurrentInstallation().saveInBackground();
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
//this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tHost = (TabHost) findViewById(android.R.id.tabhost);
tHost.setup();
/** Defining Tab Change Listener event. This is invoked when tab is changed */
TabHost.OnTabChangeListener tabChangeListener = new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
HomeFragment homeFragment = (HomeFragment) fm.findFragmentByTag("outdeh");
EventsFragment eventsFragment = (EventsFragment) fm.findFragmentByTag("events");
PicsFragment picsFragment = (PicsFragment) fm.findFragmentByTag("pics");
NewsFragment newsFragment = (NewsFragment) fm.findFragmentByTag("news");
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
/** Detaches the homeFragment if exists */
if(homeFragment!=null)
ft.detach(homeFragment);
/** Detaches the eventsFragment if exists*/
if(eventsFragment!=null)
ft.detach(eventsFragment);
/** Detaches the newsFragment if exists */
if(newsFragment!=null)
ft.detach(newsFragment);
/** Detaches the picsFragment if exists */
if(picsFragment!=null)
ft.detach(picsFragment);
/** If current tab is android */
if(tabId.equalsIgnoreCase("outdeh")){
if(homeFragment==null){
/** Create homeFragment and adding to fragmenttransaction */
ft.add(R.id.realtabcontent,new HomeFragment(), "outdeh");
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(homeFragment);
}
}else if(tabId.equalsIgnoreCase("events")){
if(eventsFragment==null){
/** Create homeFragment and adding to fragmenttransaction */
ft.add(R.id.realtabcontent,new EventsFragment(), "events");
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(eventsFragment);
}
}else if(tabId.equalsIgnoreCase("news")){
if(newsFragment==null){
/** Create homeFragment and adding to fragmenttransaction */
ft.add(R.id.realtabcontent,new NewsFragment(), "news");
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(newsFragment);
}
}else if(tabId.equalsIgnoreCase("pics")){
if(picsFragment==null){
/** Create homeFragment and adding to fragmenttransaction */
ft.add(R.id.realtabcontent,new PicsFragment(), "pics");
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(picsFragment);
}
}
ft.commit();
}
};
/** Setting tabchangelistener for the tab */
tHost.setOnTabChangedListener(tabChangeListener);
/** Defining tab builder for Home tab */
TabHost.TabSpec tSpecOutdeh = tHost.newTabSpec("outdeh");
tSpecOutdeh.setIndicator("OutDeh",getResources().getDrawable(R.drawable.home));
tSpecOutdeh.setContent(new DefinedTabContent(getBaseContext()));
tHost.addTab(tSpecOutdeh);
/** Defining tab builder for Events tab */
TabHost.TabSpec tSpecEvents = tHost.newTabSpec("events");
tSpecEvents.setIndicator("Upcoming Events",getResources().getDrawable(R.drawable.events));
tSpecEvents.setContent(new DefinedTabContent(getBaseContext()));
tHost.addTab(tSpecEvents);
/** Defining tab builder for Pics tab */
TabHost.TabSpec tSpecPics = tHost.newTabSpec("pics");
tSpecPics.setIndicator("Recent Event Pictures",getResources().getDrawable(R.drawable.pics));
tSpecPics.setContent(new DefinedTabContent(getBaseContext()));
tHost.addTab(tSpecPics);
/** Defining tab builder for News tab */
TabHost.TabSpec tSpecNews = tHost.newTabSpec("news");
tSpecNews.setIndicator("Entertainment News",getResources().getDrawable(R.drawable.news));
tSpecNews.setContent(new DefinedTabContent(getBaseContext()));
tHost.addTab(tSpecNews);
}
}
//下一课
当我运行时,我收到以下错误。
inconvertible types
found : android.support.v4.app.Fragment
required: com.outdeh.EventsFragment
detach(android.support.v4.app.Fragment) in android.support.v4.app.FragmentTransaction cannot be applied to (com.outdeh.EventsFragment)
cannot find symbol method add(int,com.outdeh.EventsFragment,java.lang.String)
attach(android.support.v4.app.Fragment) in android.support.v4.app.FragmentTransaction cannot be applied to (com.outdeh.EventsFragment)
答案 0 :(得分:1)
这意味着您的EventsFragment需要实现FragmentTransaction:
考虑您的例外:attach(android.support.v4.app.Fragment) in android.support.v4.app.FragmentTransaction cannot be (com.outdeh.EventsFragment)
可能使用getFragmentManager()
,更改为getSupportFragmentManager()
答案 1 :(得分:0)
通常,当您未在所有片段中使用支持库时,会导致此类错误。
请注意,请检查并确保您对Fragment,FragmentManager和FragmentTransaction的所有引用仅来自支持库,而不是来自另一个。此外,您对FragmentManager的调用应使用getSupportFragmentManager()。
这应解决问题。如果不是这种情况并且您使用的是正确的导入,请发布您的代码。