[译]ErrorFragmet--Android TV 应用开发教程六

版权声明:本文为博主原创翻译文章,转载请注明出处。

推荐:
欢迎关注我创建的Android TV 专题,会定期给大家分享一些AndroidTv相关的内容:
https://www.jianshu.com/c/3f0ab61a1322


[译]ErrorFragmet--Android TV 应用开发教程六_第1张图片
ErrorFragment

ErrorActivity 和 ErrorFragment

ErrorFragment是另一个Leanback库支持的布局。

ErrorActivity

New -> Java Class -> Name: ErrorActivity

  • 我们不使用布局文件来显示ErrorActivity。
    它基本上只是附加了ErrorFragment。
package com.corochann.androidtvapptutorial;

import android.app.Activity;
import android.os.Bundle;

public class ErrorActivity extends Activity {

    private static final String TAG = ErrorActivity.class.getSimpleName();

    private ErrorFragment mErrorFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        testError();
    }

    private void testError() {
        mErrorFragment = new ErrorFragment();
        getFragmentManager().beginTransaction().add(R.id.main_browse_fragment, mErrorFragment).commit();
    }
}

ErrorFragment

New -> Java Class -> Name: ErrorFragment

  • 注意这里我们不使用布局来展示ErrorFragment

ErrorFragment 是android.support.v17.leanback.app.ErrorFragment.的子类。

package com.corochann.androidtvapptutorial;

import android.os.Bundle;
import android.util.Log;
import android.view.View;

/**
 * This class demonstrates how to extend ErrorFragment
 */
public class ErrorFragment extends android.support.v17.leanback.app.ErrorFragment {

    private static final String TAG = ErrorFragment.class.getSimpleName();
    private static final boolean TRANSLUCENT = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, "onCreate");
        super.onCreate(savedInstanceState);
        
        setTitle(getResources().getString(R.string.app_name));
        setErrorContent();
    }

    void setErrorContent() {
        setImageDrawable(getActivity().getDrawable(R.drawable.lb_ic_sad_cloud));
        setMessage(getResources().getString(R.string.error_fragment_message));
        setDefaultBackground(TRANSLUCENT);

        setButtonText(getResources().getString(R.string.dismiss_error));
        setButtonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                getFragmentManager().beginTransaction().remove(ErrorFragment.this).commit();
            }
        });
    }
}

修改AndroidManifest.xml去声明ErrorActivity

  

    ...

        
    

添加代码去启动ErrorActivity

我将更改GridItemPresenter“Item 1” - >“ErrorFragment”项目的名称,我将通过单击此“ErrorFragment”项来启动此ErrorActivity。

修改MainFragment,通过意图启动ErrorActivity。
MainFragment.java

 private void loadRows() {
        ...
        //gridRowAdapter.add("ITEM 1");
        gridRowAdapter.add("ErrorFragment");
        ...
    }
        @Override
        public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
                                  RowPresenter.ViewHolder rowViewHolder, Row row) {
            // each time the item is clicked, code inside here will be executed.
            if (item instanceof Movie) {
                Movie movie = (Movie) item;
                Log.d(TAG, "Item: " + item.toString());
                Intent intent = new Intent(getActivity(), DetailsActivity.class);
                intent.putExtra(DetailsActivity.MOVIE, movie);

                getActivity().startActivity(intent);
            } else if (item instanceof String){
                if (item == "ErrorFragment") {
                    Intent intent = new Intent(getActivity(), ErrorActivity.class);
                    startActivity(intent);
                }
            }
        }

res/values/strings.xml


    AndroidTVappTutorial
    MainActivity

    Hello world!
    Settings
    DetailsActivity

    Error
    
    Media loading timed out
    Media server was not reachable
    Failed to load video
    An error occurred
    Dismiss
    Oops

编译后运行

通过点击“ErrorFragment”项,ErrorFragment将显示带有图像的错误信息。


[译]ErrorFragmet--Android TV 应用开发教程六_第2张图片
ErrorFragment
  • AOSP项目,SpinnerFragment也实现显示加载动画。 但是我在这里介绍了ErrorFragment的最小实现/用法。
    Source code is on github.
    下一篇:playbackOverlayActivity 和 PlaybackOverlayFragment--Android TV 应用开发教程七,将为你介绍视频播放控制部分。
    关注微信公众号,定期为你推荐移动开发相关文章。
    [译]ErrorFragmet--Android TV 应用开发教程六_第3张图片
    songwenju

你可能感兴趣的:([译]ErrorFragmet--Android TV 应用开发教程六)