[英]onClickListener doesnt work in Tabbed Activity Android
我在 onCreate 方法中編寫的 setOnclick 偵聽器不起作用。 該錯誤是按鈕 b1 的空指針異常錯誤。 我試圖在 onclick 方法之前初始化 b1 但它也不起作用。 對於此代碼,我使用了 Android Studio 示例“TAbbed Activity”。 然后我正在尋找一種在選項卡式活動中使用 onClickListener 方法的方法。 請告訴我一些解決方案。 謝謝
public class MainActivity extends AppCompatActivity {
public static Button b1,b2;
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
// THIS DOESNT RUN AND IT MAKES THE APP CRASH
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
b1.setText("test");
}
});
}
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {}
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public void newImageView(int sectionNumber, Button img, int n){
if(sectionNumber == n)
img.setVisibility(View.VISIBLE);
else
img.setVisibility(View.INVISIBLE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
b1=(Button)rootView.findViewById(R.id.b1);
newImageView(getArguments().getInt(ARG_SECTION_NUMBER),b1,1);
b2=(Button) rootView.findViewById(R.id.b2);
newImageView(getArguments().getInt(ARG_SECTION_NUMBER),b2,2);
return rootView;
}
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "SECTION 1";
case 1:
return "SECTION 2";
}
return null;
}
}
}`enter code here
把這個放在設置 onClickListener 之前
b1=(Button)rootView.findViewById(R.id.b1);
或在分配 id 后設置偵聽器。 在處理點擊之前,您應該為按鈕分配一個 id。 否則,android 應該如何找出 b1 是什么按鈕。
該按鈕可能是在你的片段的XML(R.layout.fragment_main),所以你應該補充的是onClickListener()
在onCreateView()
您的PlaceholderFragment
后b1=(Button)rootView.findViewById(R.id.b1);
.
在任何情況下,您都不能在未首先定義的對象中定義 onClickListener()。 您首先必須通過b1=(Button)rootView.findViewById(R.id.b1);
的 XML 中的 id 屬性找到該視圖b1=(Button)rootView.findViewById(R.id.b1);
或使用構造函數創建一個,例如。 b1= new Button();
(不適合您的情況)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.