[英]OnTabListener not working in Android
I have run into a problem where when I put the name of a fragment, an error occurs as shows: 我遇到了一个问题,当我输入片段的名称时,会出现如下所示的错误:
Type mismatch: cannot convert from Fragment1 to Fragment
Here is my MainActivity.java code: 这是我的MainActivity.java代码:
package com.example.currencyconverter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DecimalFormat;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setSubtitle("Created By Rohit Nandakumar");
actionBar.setTitle("Currency Converter");
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab Frag1 = actionBar.newTab().setText("Converter");
ActionBar.Tab Frag2 = actionBar.newTab().setText("Currencies");
Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();
Frag1.setTabListener(new MyTabsListener(fragment1));
Frag2.setTabListener(new MyTabsListener(fragment2));
actionBar.addTab(Frag1);
actionBar.addTab(Frag2);
}
Here is my Fragment1 code: 这是我的Fragment1代码:
package com.example.currencyconverter;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_main, container, false);
}
} }
This is my Fragment 2 code: 这是我的片段2代码:
package com.example.currencyconverter;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment2 {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_first, container, false);
}
} }
Here is the MyTabsListener.java file: 这是MyTabsListener.java文件:
package com.example.currencyconverter;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentTransaction;
public class MyTabsListener implements TabListener {
public Fragment fragment;
public MyTabsListener(Fragment fragment) {
this.fragment = fragment;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
ft.replace(R.id.fragment_container, fragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
The problem occurs right here in the MainActivity.java file: 该问题发生在MainActivity.java文件中:
Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();
The 的
new Fragment1();
and the 和
new Fragment2();
part of the code is highlighted and it says: 部分代码突出显示,并指出:
Type mismatch: cannot convert from Fragment1 to Fragment
What is happening? 怎么了? What am i doing wrong?
我究竟做错了什么? Any help is greatly appreciated.
任何帮助是极大的赞赏。
Your Fragment1
and Fragment2
classes do not extend Fragment
: 您的
Fragment1
和Fragment2
类不扩展Fragment
:
public Fragment1 extends Fragment {
...
}
Try replacing 尝试更换
Fragment fragment1 = new Fragment1();
Fragment fragment2 = new Fragment2();
to 至
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.