Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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
Android 将本机操作栏转换为操作栏Sherlock_Android_Android Intent_Android Actionbar_Actionbarsherlock - Fatal编程技术网

Android 将本机操作栏转换为操作栏Sherlock

Android 将本机操作栏转换为操作栏Sherlock,android,android-intent,android-actionbar,actionbarsherlock,Android,Android Intent,Android Actionbar,Actionbarsherlock,通常学习最好的方法是学习工作示例和拼凑细节 直到我明白一切是如何运作的。我对ActionBar或ABS没有太多经验,但我找到了一个本地ActionBar的工作演示。我在这里发现: 我得到了这个演示和ABS库并在eclipse中运行。我现在的问题是,我将如何将其转换为ABS动作栏,或使用ABS重新创建等效的动作栏?(只是一个简单的入门级ABS动作栏,我可以轻松使用,其中有几个项目链接到不同的活动。) 以下是操作栏演示代码: package com.markupartist.android.acti

通常学习最好的方法是学习工作示例和拼凑细节 直到我明白一切是如何运作的。我对
ActionBar
ABS
没有太多经验,但我找到了一个本地
ActionBar
的工作演示。我在这里发现:

我得到了这个演示和
ABS库
并在eclipse中运行。我现在的问题是,我将如何将其转换为ABS动作栏,或使用ABS重新创建等效的动作栏?(只是一个简单的入门级ABS动作栏,我可以轻松使用,其中有几个项目链接到不同的活动。)

以下是操作栏演示代码:

package com.markupartist.android.actionbar.example;

import com.markupartist.android.widget.ActionBar;
import com.markupartist.android.widget.ActionBar.Action;
import com.markupartist.android.widget.ActionBar.IntentAction;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class HomeActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final ActionBar actionBar = (ActionBar) findViewById(R.id.actionbar);
        //actionBar.setHomeAction(new IntentAction(this, createIntent(this), R.drawable.ic_title_home_demo));
        actionBar.setTitle("Home");

        final Action shareAction = new IntentAction(this, createShareIntent(), R.drawable.ic_title_share_default);
        actionBar.addAction(shareAction);
        final Action otherAction = new IntentAction(this, new Intent(this, OtherActivity.class), R.drawable.ic_title_export_default);
        actionBar.addAction(otherAction);

        Button startProgress = (Button) findViewById(R.id.start_progress);
        startProgress.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                actionBar.setProgressBarVisibility(View.VISIBLE);
            }
        });

        Button stopProgress = (Button) findViewById(R.id.stop_progress);
        stopProgress.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                actionBar.setProgressBarVisibility(View.GONE);
            }
        });

        Button removeActions = (Button) findViewById(R.id.remove_actions);
        removeActions.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                actionBar.removeAllActions();
            }
        });

        Button addAction = (Button) findViewById(R.id.add_action);
        addAction.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                actionBar.addAction(new Action() {
                    @Override
                    public void performAction(View view) {
                        Toast.makeText(HomeActivity.this, "Added action.", Toast.LENGTH_SHORT).show();
                    }
                    @Override
                    public int getDrawable() {
                        return R.drawable.ic_title_share_default;
                    }
                });
            }
        });

        Button removeAction = (Button) findViewById(R.id.remove_action);
        removeAction.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                int actionCount = actionBar.getActionCount();
                actionBar.removeActionAt(actionCount - 1);
                Toast.makeText(HomeActivity.this, "Removed action." , Toast.LENGTH_SHORT).show();
            }
        });

        Button removeShareAction = (Button) findViewById(R.id.remove_share_action);
        removeShareAction.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                actionBar.removeAction(shareAction);
            }
        });
    }

    public static Intent createIntent(Context context) {
        Intent i = new Intent(context, HomeActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        return i;
    }

    private Intent createShareIntent() {
        final Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "Shared from the ActionBar widget.");
        return Intent.createChooser(intent, "Share");
    }
}

ActionBarSherlock是API 14和15 action bar的一个完整的API后端口,它是Android的一部分

如果您是图书馆的新手,我建议您首先尝试学习如何使用。只有在您熟悉使用后,才能切换到使用ABS

切换将非常简单,因为它主要由以下三部分组成:

  • 将一些导入内容(例如,
    ActionBar
    MenuItem
    )从
    android.app
    更改为
    com.actionbarsherlock.app
    android.view
    更改为
    com.actionbarsherlock.view
  • 将主题从
    theme.Holo
    更改为
    theme.Sherlock
    (或
    .Light
    .Light.darkaActionBar
  • 将您的活动更改为从
    SherlockActivity
    扩展而不是
    activity
  • 将对
    getActionBar()
    的调用切换到
    getSupportActionBar()
容易极了

另外,应该注意的是,您的演示不是本机操作栏,而是一个第三方库,它在操作栏内置到操作系统之前就模拟了操作栏