Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将活动类集成到片段中_Java_Android_Android Fragments_Actionbarsherlock - Fatal编程技术网

Java Android将活动类集成到片段中

Java Android将活动类集成到片段中,java,android,android-fragments,actionbarsherlock,Java,Android,Android Fragments,Actionbarsherlock,我正在开发一个android应用程序,它可以显示听力测试的结果。它是前一段时间制作的,所以很多代码都被贬低了。旧代码使用一个选项卡activity,该选项卡工作正常: public class TabbedResultActivity extends TabActivity { private TabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(s

我正在开发一个android应用程序,它可以显示听力测试的结果。它是前一段时间制作的,所以很多代码都被贬低了。旧代码使用一个
选项卡activity
,该选项卡工作正常:

public class TabbedResultActivity extends TabActivity {
private TabHost mTabHost;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.tabbed_results);

    setTabs();
}

private void setTabs() {
    mTabHost = getTabHost();

    addTab(R.string.Left_ear, false);
    addTab(R.string.Right_ear, true);
}

private void addTab(int labelId, boolean aRight) {
    Intent intent = createIntent(aRight);
    TabHost.TabSpec spec = mTabHost.newTabSpec("tab" + labelId);        

    View tabIndicator =     LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setTextSize(14.0f);
    title.setText(labelId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    mTabHost.addTab(spec);
}

private Intent createIntent( boolean aRight) {
    Intent newIntent = new Intent(getIntent());
    newIntent.putExtra(ResultActivity.IS_RIGHT_EAR, aRight);
    newIntent.setClass(this, ResultActivity.class);
    return newIntent;
}   
但是,我遇到的问题是,我必须为新设备上的菜单添加一个操作栏。为了使应用程序在所有设备上兼容,我使用了
ActionBarSherlock
库。这很好,但我不知道如何将我的
ResultsActivity
添加到片段中,因为我需要
ResultsActivity
SherlockFragmentActivity
扩展,但要将其集成到片段中,我需要扩展
SherlockFragment
类。如果我这样做,我会收到大量错误,因为它不是从活动扩展而来的。这是我最初的
ResultsActivity
课程:

public class ResultActivity extends SherlockFragmentActivity {
public static final String IS_RIGHT_EAR = "is_right_ear";
private ArrayList<EarSrt> leftAnswerList;
private ArrayList<EarSrt> rightAnswerList;

private boolean isRightEarTab = true;

private boolean bothEarsBad;
private boolean leftEarBad;
private boolean rightEarBad;


@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.results_layout);

    Intent intent = getIntent();
    int rowId = intent.getIntExtra(ResultsDatabase._ID, -1);
    if ( rowId != -1 ) {
        ResultsDatabase db = new ResultsDatabase(this);
        String select = "(" + ResultsDatabase._ID + " == " + rowId + ")";
        Cursor c = db.getReadableDatabase().query(ResultsDatabase.TABLE_NAME, null, select, null, null, null,null);
        if ( c.moveToFirst() ) {
            int leftEarColumn = c.getColumnIndex(ResultsDatabase.LEFT_EAR);
            byte[] leftEarByteArray = c.getBlob(leftEarColumn);
            int rightEarColumn = c.getColumnIndex(ResultsDatabase.RIGHT_EAR);
            byte[] rightEarByteArray = c.getBlob(rightEarColumn);
            leftAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(leftEarByteArray);
            rightAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(rightEarByteArray);
        }

    } else {
        byte[] leftEarByteArray = getIntent().getByteArrayExtra(ResultsDatabase.LEFT_EAR);;
        byte[] rightEarByteArray = getIntent().getByteArrayExtra(ResultsDatabase.RIGHT_EAR);
        leftAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(leftEarByteArray);
        rightAnswerList = (ArrayList<EarSrt>) ResultsDatabase.deserializeObject(rightEarByteArray);
    }

    isRightEarTab = getIntent().getBooleanExtra(IS_RIGHT_EAR, true);

    GraphView graphView = (GraphView)findViewById(R.id.graphview);

    if ( isRightEarTab ) {
        graphView.setPoints(rightAnswerList);
        float average = calculateAverage(rightAnswerList);
        graphView.setAverage(average);
    } else {
        graphView.setPoints(leftAnswerList);
        float average = calculateAverage(leftAnswerList);
        graphView.setAverage(average);
    }

    setResults(leftAnswerList, rightAnswerList);
}

private float calculateAverage(List<EarSrt> steps) {
    float srt = 0.0f;
    int length = steps.size();

    for (int i = (int)Math.ceil( (float)length/(float)2); i < length; i++) {
        EarSrt es = steps.get(i);
        srt += es.getSrt();

        //printf("%f ," , [es srt]);
    }

    srt = srt / (length-(float)Math.ceil( (float)length/(float)2));

//      printf("\n%f\n" , srt);

    return srt;
}

private void setResults(List<EarSrt> leftEar, List<EarSrt> rightEar) {
    float esLeft = calculateAverage(leftEar);
    float esRight = calculateAverage(rightEar); 

    leftEarBad = (esLeft > 24.0);
    rightEarBad = (esRight > 24.0);
    bothEarsBad = (leftEarBad && rightEarBad);

    setResultCaption(bothEarsBad, leftEarBad, rightEarBad);
}


/**
 * TODO: this needs finishing
 */
private void setResultCaption(boolean bothEarsBad, boolean leftEarBad, boolean rightEarBad) {
    TextView resultsTextView = (TextView)findViewById(R.id.results_text);
    StringBuilder resultsText = new StringBuilder();
    if (bothEarsBad) {
        resultsText.append(getString(R.string.The_test_indicates_a_possible_hearing_loss));
        resultsText.append(getString(R.string.We_recommend_that_you_visit_a_Hearing_Care_Professional_for_a_comprehensive_hearing_check));
    }else{
        if (leftEarBad) {
            resultsText.append(getString(R.string.The_test_indicates_a_possible_hearing_loss_for_your_left_ear));
            resultsText.append(getString(R.string.We_recommend_that_you_visit_a_Hearing_Care_Professional_for_a_comprehensive_hearing_check));
        } else if (rightEarBad) {
            resultsText.append(getString(R.string.The_test_indicates_a_possible_hearing_loss_for_your_Right_ear));
            resultsText.append(getString(R.string.We_recommend_that_you_visit_a_Hearing_Care_Professional_for_a_comprehensive_hearing_check));      
        }else {
            resultsText.append(getString(R.string.There_is_no_indication_of_hearing_loss));
        }                               
    }

    resultsText.append(getString(R.string.The_results_of_the_hearing_test_are_not_to_be_utilized_as_an_official_outcome_for_assessing_levels_of_hearing_loss_True_hearing_loss_assessments_can_only_be_determined_by_a_licensed_hearing_healthcare_provider));                                  

    resultsTextView.setText(resultsText.toString());
}

public void goToLocate(View aView){
    Intent locate = new Intent( this, LocateActivity.class);
    startActivity(locate);
    finish();
}
}
公共类结果性扩展了SherlockFragmentActivity{
公共静态最终字符串为\u RIGHT\u EAR=“IS\u RIGHT\u EAR”;
私有ArrayList leftAnswerList;
私人ArrayList rightAnswerList;
私有布尔值isRightEarTab=true;
私家布尔值不好;
私有布尔左耳坏;
私有布尔右耳巴德;
@抑制警告(“未选中”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.results\u布局);
Intent=getIntent();
int rowId=intent.getIntExtra(ResultsDatabase.\u ID,-1);
如果(rowId!=-1){
ResultsDatabase db=新的ResultsDatabase(此);
字符串select=“(“+ResultsDatabase.\u ID+”==“+rowId+”);
游标c=db.getReadableDatabase().query(ResultsDatabase.TABLE_NAME,null,select,null,null,null,null);
if(c.moveToFirst()){
int leftEarColumn=c.getColumnIndex(ResultsDatabase.leftear);
字节[]leftEarByteArray=c.getBlob(leftEarColumn);
int righterColumn=c.getColumnIndex(ResultsDatabase.RIGHT\u EAR);
字节[]rightEarByteArray=c.getBlob(rightEarColumn);
leftAnswerList=(ArrayList)ResultsDatabase.deserializeObject(leftEarByteArray);
rightAnswerList=(ArrayList)ResultsDatabase.deserializeObject(rightEarByteArray);
}
}否则{
字节[]leftearbytarray=getIntent().getByteArrayExtra(ResultsDatabase.LEFT_EAR);;
字节[]rightEarByteArray=getIntent().getByteArrayExtra(ResultsDatabase.RIGHT_EAR);
leftAnswerList=(ArrayList)ResultsDatabase.deserializeObject(leftEarByteArray);
rightAnswerList=(ArrayList)ResultsDatabase.deserializeObject(rightEarByteArray);
}
isRightEarTab=getIntent().getBooleanExtra(是右耳,真的);
GraphView GraphView=(GraphView)findViewById(R.id.GraphView);
如果(iRightearTab){
图形视图设定点(右侧应答列表);
浮动平均值=计算平均值(rightAnswerList);
graphView.setAverage(平均值);
}否则{
图形视图设定点(左应答列表);
浮动平均值=计算平均值(leftAnswerList);
graphView.setAverage(平均值);
}
setResults(leftAnswerList、rightAnswerList);
}
专用浮点运算范围(列出步骤){
浮动srt=0.0f;
int length=steps.size();
对于(inti=(int)Math.ceil((float)length/(float)2);i24.0);
rightEarBad=(esRight>24.0);
bothEarsBad=(leftEarBad和&righearbad);
设置结果选项(bothEarsBad、leftEarBad、righearbad);
}
/**
*TODO:这需要完成
*/
private void SetResultOption(布尔型bothEarsBad、布尔型leftEarBad、布尔型rightEarBad){
TextView结果TextView=(TextView)findViewById(R.id.results\u text);
StringBuilder resultsText=新建StringBuilder();
如果(坏的){
resultsText.append(getString(R.string.The_test_表示可能的听力损失));
resultsText.append(getString(R.string.我们建议您访问听力护理专业人员进行全面听力检查));
}否则{
if(leftEarBad){
resultsText.append(getString(R.string.The_test_表示您的左耳可能听力受损);
resultsText.append(getString(R.string.我们建议您访问听力护理专业人员进行全面听力检查));
}else if(righterabad){
resultsText.append(getString(R.string.The_test_表示您的右耳可能听力受损);
resultsText.append(getString(R.string.我们建议您访问听力护理专业人员进行全面听力检查));
}否则{
resultsText.append(getString(R.string.There没有听力丧失的迹象));
}                               
}
resultsText.append(getString(R.string.听力测试的结果未被用作官方结果,用于评估听力水平、真实听力损失、评估听力损失,只能由持有执照的听力保健提供者确定));
resultsTextView.setText(resultsText.toString());
}
公共void gotolotate(查看视图){
意向定位=新意向(此,LocateActivity.class);
星触觉(定位);
完成();
}
}
我基本上需要将这段代码集成到两个片段中,一个用于左耳,一个用于右耳。我试过看夏洛克的碎片样本,但还是不知道怎么做。如果有人能给我指出正确的方向,那将非常有帮助


提前谢谢。

您好,您可以找到演示和代码e