当前位置: 首页 > 知识库问答 >
问题:

如何在片段中改变活动的背景?

秦承安
2023-03-14
public class MjpegPlayerFragment extends Fragment {

private RelativeLayout relativeLayout;

公共视图onCreateView(LayoutInflater inflater、ViewGroup容器、Bundle savedInstanceState){

    Log.d(TAG, "Fragment View Created") ;

    View view = inflater.inflate(R.layout.preview_player, container, false) ;
    relativeLayout = (RelativeLayout) getActivity().findViewById(R.id.splash);


ChangeBackground = (ImageButton) view.findViewById(R.id.ChangeBackground);

        ChangeBackground.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Activity activity = getActivity();
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent, 1);
            }
        });
}
    @SuppressLint("NewApi")
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        if(resultCode == Activity.RESULT_OK) {

            Context context = getActivity();
            Uri uri = data.getData();
            ContentResolver cr = context.getContentResolver();
            try {
                Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
                BitmapDrawable background = new BitmapDrawable(bitmap);
                relativeLayout.setBackground(background);
            } catch (FileNotFoundException e) {
                // TODO: handle exception
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

但是它崩溃了,错误日志如下所示:

D/AndroidRuntime(29590): Shutting down VM
W/dalvikvm(29590): threadid=1: thread exiting with uncaught exception (group=0x416cc450)
--------- beginning of /dev/log/system
E/AndroidRuntime(29590): FATAL EXCEPTION: main
E/AndroidRuntime(29590): java.lang.RuntimeException: Failure delivering result ResultInfo{who=android:fragment:0, request=1, result=-1, data=Intent { dat=content://media/external/images/media/23878 }} to activity {tw.com.a_i_t.IPCamViewer/tw.com.a_i_t.IPCamViewer.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(29590):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3161)
E/AndroidRuntime(29590):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3204)
E/AndroidRuntime(29590):    at android.app.ActivityThread.access$1100(ActivityThread.java:137)
E/AndroidRuntime(29590):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1254)
E/AndroidRuntime(29590):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(29590):    at android.os.Looper.loop(Looper.java:213)
E/AndroidRuntime(29590):    at android.app.ActivityThread.main(ActivityThread.java:4786)
E/AndroidRuntime(29590):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(29590):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(29590):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
E/AndroidRuntime(29590):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
E/AndroidRuntime(29590):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(29590): Caused by: java.lang.NullPointerException
E/AndroidRuntime(29590):    at tw.com.a_i_t.IPCamViewer.Viewer.MjpegPlayerFragment.onActivityResult(MjpegPlayerFragment.java:1627)
E/AndroidRuntime(29590):    at android.app.Activity.dispatchActivityResult(Activity.java:5196)
E/AndroidRuntime(29590):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3157)
E/AndroidRuntime(29590):    ... 11 more
W/ActivityManager(  568):   Force finishing activity tw.com.a_i_t.IPCamViewer/.MainActivity
W/ActivityManager(  568): Activity pause timeout for ActivityRecord{42260630 tw.com.a_i_t.IPCamViewer/.MainActivity}

(MJPEGPlayerFragment.java:1627)RelativeLayout.setBackground(背景);

我已经在oncreatview中为Relationvelayout添加了init,如下所示:

relativeLayout = (RelativeLayout) getActivity().findViewById(R.id.splash);

我的场景是:

Activity1-->Activity1-->片段

Splash的XML如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/splash"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/wifi_dvr" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/title"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="146dp"
        android:src="@drawable/banner" />

</RelativeLayout>

我有两项活动。片段由activity2调用,我想改变Activity1的背景。

共有1个答案

丁英韶
2023-03-14

Relationvelayout未初始化。要么是未初始化,要么是初始化失败。

relativeLayout = (RelativeLayout)getActivity().findViewById(R.id.relativelayout);

在片段类的onActivityCreated中。

或者在Activity类中初始化relativeLayout。使用接口作为活动的回调并更改活动本身的背景

 类似资料:
  • 我正在创建一个包含两个片段的活动。一个用于求和减法,另一个用于显示总值主活动包含变量(总值),如果片段中的值为总和,则变量(总值)按输入值增加,否则按输入值减少 这个变量(总数)显示在第二个片段中

  • 长话短说。 我有两个片段的主要活动。因此,这里不是主要活动,而是两个片段。在第一个片段中有一个开关。 当选中或取消选中开关时,是否可以从主活动更新背景?背景设置在content_main中。xml,因为在更改片段时没有转换。 那么这有可能吗? 我认为这会奏效: 在主要活动中: 还是因为片段本身没有加载新的内容而不可能?如果是这样。怎么可能? 提前谢谢各位 资料来源: 从另一个活动更改一个活动的背景

  • 问题内容: 我想将自己更改为我尝试过的内容,但无法将我的活动更改为片段。有人可以告诉我该怎么做吗?在哪里编辑我是Android上的新手。请告诉我和在此先感谢 这是我的活动: 问题答案: 只要了解一些步骤,您就可以现在和将来轻松地将Activity转换为Fragment ..: 首先,不要扩展,只要扩展.. 例如: 然后覆盖.. 然后通过LayoutInflater扩展布局,并分配给进一步用于子视图

  • 我找不到如何从< code>Activity更改fragment的< code>textview。我有4个文件: frag_class.xml有textView,我想更改MainActivity.java的文本。FragmentClass扩展了片段,此片段显示在MainActivity中,FragmentClass具有: 在MainActivity中,我尝试了这个: 但可悲的是,这段代码给了我Nu

  • 我刚接触Android,有一个带有片段的选项卡布局,我有一个编辑文本字段,它是在我的父活动中声明的,我想检查编辑文本字段是否为空,是否来自片段。我该怎么做呢?这是我做的,但它显示了错误。这是我的主要活动编辑文本字段: 这是我的片段活动: 这是我的日志: