我尝试创建滑动视图在android.Below中有两个标签栏是我的编码片段。
Tab.java
public class Tab extends FragmentActivity {
ViewPager Tab;
TabPagerAdapter TabAdapter;
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
Tab = (ViewPager)findViewById(R.id.pager);
Tab.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar = getActionBar();
actionBar.setSelectedNavigationItem(position); }
});
Tab.setAdapter(TabAdapter);
actionBar = getActionBar();
//Enable Tabs on Action Bar
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener(){
@Override
public void onTabReselected(android.app.ActionBar.Tab tab,
FragmentTransaction ft) {
// TODO Auto-generated method stub
// Toast.makeText(getApplicationContext(), "Tab selected", 200).show();
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
Tab.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(android.app.ActionBar.Tab tab,
FragmentTransaction ft) {
// TODO Auto-generated method stub
}};
//Add New Tabs
actionBar.addTab(actionBar.newTab().setText("Information").setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("Work Force").setTabListener(tabListener));
actionBar.addTab(actionBar.newTab().setText("Work Details").setTabListener(tabListener));
}
}
Information.java
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import com.example.project.project.database.MyDatabaseHelper;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class Information extends Fragment implements View.OnClickListener {
private Spinner spinner, spinner2, spinner3;
private MyDatabaseHelper dbHelper;
private com.example.project.project.API.InfoAPI ts;
private static EditText txtDate;
private DateDialog dialog;
private static String a;
private static String b;
private static String c;
private static String date1;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View info = inflater.inflate(R.layout.information, container, false);
dialog = new DateDialog();
txtDate = (EditText) info.findViewById(R.id.editText5);
txtDate.setOnClickListener(this);
addItemsOnSpinner();
addItemsOnSpinner2();
addItemsOnSpinner3();
return info;
}
public void onClick(View arg0) {
FragmentTransaction ft =getActivity().getSupportFragmentManager().beginTransaction();
dialog.show(ft, "DatePicker");
}
public void addItemsOnSpinner() {
spinner = (Spinner)getView().findViewById(R.id.spinner);
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
WorkDetailsTable.java
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TimePicker;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public void onClick(View v) {
int id = v.getId();
if (id == R.id.editTextTI1) {
tp.setFlag(TimePick.FLAG_START_DATE);
FragmentTransaction ft = getFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
}
我收到的错误如下:
Error:(294, 15) error: no suitable method found for show(android.support.v4.app.FragmentTransaction,String)
method DialogFragment.show(FragmentManager,String) is not applicable
(argument mismatch; android.support.v4.app.FragmentTransaction cannot be converted to FragmentManager)
method DialogFragment.show(android.app.FragmentTransaction,String) is not applicable
(argument mismatch; android.support.v4.app.FragmentTransaction cannot be converted to android.app.FragmentTransaction)
请帮助我..我已经厌倦了四处寻找..感谢:)。
答案 0 :(得分:0)
错误“解析时达到文件结尾”可能会显示,因为您忘记关闭大括号: `}“
您真的发布了文件的完整代码吗?如果是这样,这肯定是你的问题。
我不知道您使用的是什么IDE,但我建议您使用AndroidStudio或Eclipse IDE。他们会立即向您显示编译时错误,以便您能够轻松修复它们。
对于ViewPager的使用,Android开发者提供了一些优秀的资源。我建议您稍微阅读一下:
http://developer.android.com/training/animation/screen-slide.html
还有一个示例应用程序供您下载
至于你的编辑:
getSupportFragmentManager()在Fragment类中不可用。所以你需要像这样调用它。
getActivity()。getSupportFragmentManager()
请多阅读一下android Fragments和Activitys以避免这些琐碎的错误。
答案 1 :(得分:0)
首先,您的代码看起来相当不完整,因此很难说出确切的问题。
现在,对于我能够看到的问题。
<强> Tab.java 强>
ActionBar
与原生支持混合在一起。您应该使用getSupportActionBar()
。android.app.ActionBar.Tab
和android.support.v7.app.ActionBar.Tab
。他们不是同一个野兽。你应该使用支持。<强> WorkDetailsTable.java 强>
你在那里缺少很多代码。那是完整的文件吗?
Information.java 和 WorkDetailsTable.java
android.app.FragmentTransaction
但getSupportFragmentManager.beginTransaction()
返回android.support.v4.app.FragmentTransaction
。 android.app.DialogFragment
实现的。您可以使用android.supportv4.DialogFragment
来实现它们。 错误记录
您收到这些错误是因为您使用的是不兼容的类型。 android.app.FragmentTransaction
和android.support.v4.app.FragmentTransaction
是不同的类型。