私のアプリでは、neokree の materialtabs ライブラリを使用しています。アプリで複数の言語をサポートしたいので、タブのタイトルが翻訳をサポートするようにします。しかし、私はそれを機能させません!ViewPagerAdapter.java にはこのメソッド「Charsequence getPageTitle(int position)」があるため、switch(position) を作成しました。しかし今、例えば:
case 0:
return R.string.title1;
R.string.title1 が int を返すため、機能しません。しかし、ヘルパー クラスであるため、getString や getResources を使用することはできません。また、「クラスは複数のクラスを拡張できません」と書かれているため、コンテキストを使用できません。解決策はありますか?
これが私のコードです:
ViewPagerAdapter.java:
package jdev.voicerecorder;
import android.app.Activity;
import android.app.Application;
import android.bluetooth.BluetoothClass;
import android.content.Context;
import android.os.Build;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.util.Log;
import java.util.Locale;
class ViewPagerAdapter extends FragmentStatePagerAdapter{
public Context c;
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
public Fragment getItem(int num){
Log.d("tag", "num " + num);
switch (num){
case 0:
return new Record();
case 1:
return new ShowList();
}
return null;
}
@Override
public int getCount(){
return 2;
}
@Override
public CharSequence getPageTitle(int position){
switch (position){
case 0:
return R.string.title1;
case 1:
return R.string.title2;
}
return null;
}
}
私の Mainactivity.java (私はそれを RecordingActivity.java と呼びました):
package jdev.voicerecorder;
import android.os.Environment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import java.io.File;
import it.neokree.materialtabs.MaterialTab;
import it.neokree.materialtabs.MaterialTabHost;
import it.neokree.materialtabs.MaterialTabListener;
public class RecordingActivity extends ActionBarActivity implements MaterialTabListener{
private Toolbar toolbar;
MaterialTabHost tabHost;
ViewPager pager;
ViewPagerAdapter pagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recording);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
File folder=new File(Environment.getExternalStorageDirectory()
+File.separator
+"/Recordings");
boolean success=true;
if (!folder.exists()){
success=folder.mkdir();
}
if (success){
}else {
}
tabHost = (MaterialTabHost) this.findViewById(R.id.tabHost);
pager = (ViewPager) this.findViewById(R.id.pager);
pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
tabHost.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < pagerAdapter.getCount(); i++) {
tabHost.addTab(
tabHost.newTab()
.setText(pagerAdapter.getPageTitle(i))
.setTabListener(this)
);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_recording, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
return super.onOptionsItemSelected(item);
}
@Override
public void onTabSelected(MaterialTab materialTab) {
pager.setCurrentItem(materialTab.getPosition());
}
@Override
public void onTabReselected(MaterialTab materialTab) {
}
@Override
public void onTabUnselected(MaterialTab materialTab) {
}
}
そしてstrings.xml:
<resources>
<string name="app_name">Recorder</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="recordTab">Record</string>
<string name="recordsTab">All records</string>
<string name="allrecordsTab">ALL RECORDS</string>
<string name="editexttitle">Filename</string>
<string name="savingpath">"Recording saved</string>
<string name="exText">Recording</string>
<string name="buttonSave">Save</string>
<string name="buttonRecord">Record</string>
<string name="Recording">Recording</string>
<string name="deleted">File removed</string>
<string name="title1">Record</string>
<string name="title2">All Files</string>
<string name="bla">Bla</string>
</resources>
そしてエラーログは
Error:(51, 32) error: incompatible types
required: CharSequence
found: int