Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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 我如何改变我的活动';s碎片容器';使用自定义对话框和代码的背景?_Java_Android_Xml_Android Fragments - Fatal编程技术网

Java 我如何改变我的活动';s碎片容器';使用自定义对话框和代码的背景?

Java 我如何改变我的活动';s碎片容器';使用自定义对话框和代码的背景?,java,android,xml,android-fragments,Java,Android,Xml,Android Fragments,对安卓系统来说相当陌生,我正在尝试做一些背景颜色的改变。基本上,我有一个主活动,它的xml中只有一个框架布局。创建活动时,它会为我的程序打开一个片段。我有一个菜单项,当点击时弹出一个带有3个搜索栏(红色、绿色、蓝色)的对话框。我想将背景颜色更改为seekbars的位置。我已经完成了seekbar的所有代码,我知道它可以在我创建的一个简单应用程序上运行。由于未知原因,当我尝试打开对话框时,我的应用程序失败。在主要活动中设置此项的正确方式是什么?我希望用户能够随时更改背景颜色。我所有的片段布局都是透

对安卓系统来说相当陌生,我正在尝试做一些背景颜色的改变。基本上,我有一个主活动,它的xml中只有一个框架布局。创建活动时,它会为我的程序打开一个片段。我有一个菜单项,当点击时弹出一个带有3个搜索栏(红色、绿色、蓝色)的对话框。我想将背景颜色更改为seekbars的位置。我已经完成了seekbar的所有代码,我知道它可以在我创建的一个简单应用程序上运行。由于未知原因,当我尝试打开对话框时,我的应用程序失败。在主要活动中设置此项的正确方式是什么?我希望用户能够随时更改背景颜色。我所有的片段布局都是透明的。这是我一直在学习的教程。任何建议都很好。我认为我的问题是我不完全理解如何从MainActivity java类的中访问我的main_活动的FrameLayout

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:background="#e3a153">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/fragmentView"></FrameLayout>



</LinearLayout>
我花了好几个小时想弄明白,但我不知道该把什么放在哪里

这是我在上面的链接中找到的示例代码

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.SeekBar;

public class SeekColorActivity extends Activity {

private int seekR, seekG, seekB;
SeekBar redSeekBar, greenSeekBar, blueSeekBar;
LinearLayout mScreen;

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

    mScreen = (LinearLayout) findViewById(R.id.myScreen);
    redSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_R);
    greenSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_G);
    blueSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_B);
    updateBackground();

    redSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);
    greenSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);
    blueSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);

}

private SeekBar.OnSeekBarChangeListener seekBarChangeListener
= new SeekBar.OnSeekBarChangeListener()
{

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
  boolean fromUser) {
// TODO Auto-generated method stub
 updateBackground();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
};

private void updateBackground()
{
 seekR = redSeekBar.getProgress();
 seekG = greenSeekBar.getProgress();
 seekB = blueSeekBar.getProgress();
 mScreen.setBackgroundColor(
  0xff000000
  + seekR * 0x10000
  + seekG * 0x100
  + seekB
  );
}
}
categoryFragment.java

package com.example.mikesgamerig.finalproject;

import android.app.AlertDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class CategoryFragment extends Fragment {

    private ArrayList<String> categoryNameArrayList;
    private ArrayAdapter<String> adapter;
    private AlertDialog alertDialog;
    private AlertDialog alertDialogDelete;
    private EditText categoryEditText;
    private String getCategoryName;
    private List<Category> cats;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        //create view
        View rootView = inflater.inflate(R.layout.fragment_category, container, false);

        //initialize all variables and widgets
        inflater = getLayoutInflater(savedInstanceState);
        alertDialog = new AlertDialog.Builder(getActivity()).create();
        alertDialog.setView(inflater.inflate(R.layout.dialog_add_category, null));
        alertDialogDelete = new AlertDialog.Builder(getActivity()).create();
        alertDialogDelete.setView(inflater.inflate(R.layout.dialog_delete_category, null));
        Button buttonAddCategory = (Button) rootView.findViewById(R.id.addCategoryButton);
        ListView categoryListView = (ListView) rootView.findViewById(R.id.list);

        //Array list to store names of categories
        categoryNameArrayList = new ArrayList<String>();

        //List of Category Objects
        cats = Category.listAll(Category.class);

        getCategoryNames();
        //iterate through the CategoryList and attach to the ArrayList


        //create adapter and fill the listView with all the name of categories
        adapter = new ArrayAdapter<String>(getActivity(), R.layout.rowlayout, R.id.label, categoryNameArrayList);
        categoryListView.setAdapter(adapter);

        //set OnClick listener for the add category Button.
        // This calls another method that will open a custom dialog box
        buttonAddCategory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DisplayAddCategoryDialogBox();
            }
        });

        //set an onItemLongClick listener for the ListView.
        //First have to setLongClickable to true.
        //the OnItemLongClick listener will call a method to open a custom Dialog to delete a category.
        categoryListView.setLongClickable(true);
        categoryListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                DeleteCategory(i);
                return true;
            }
        });

        //opens up a new fragment with a list of recipes for the specific category.
        categoryListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


                String name = categoryNameArrayList.get(i);
                RecipeFragment fragment = new RecipeFragment();
                fragment.SetTitleName(name);
                getFragmentManager().beginTransaction()
                        .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
                        .replace(R.id.fragmentView, fragment)
                        .addToBackStack(null).commit();


            }
        });
        return rootView;

    }

//This method will Display a custom add category Dialog Box.
    public void DisplayAddCategoryDialogBox(){

        //Show the Dialog box to enter a new category name.
        alertDialog.show();
        categoryEditText = (EditText) alertDialog.findViewById(R.id.categoryEditText);
        Button saveCategoryDialogBtn = (Button) alertDialog.findViewById(R.id.saveBtn);
        Button cancelDialogButton = (Button) alertDialog.findViewById(R.id.cancelBtn);
        saveCategoryDialogBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getCategoryName = categoryEditText.getText().toString();
                //Log.d("STRING VALUE:", getCategoryName);
                Category test = new Category(getCategoryName);
                test.save();
                categoryNameArrayList.add(test.getName());
                //Log.d("added Value: ", test.getName());
                adapter.notifyDataSetChanged();
                alertDialog.hide();
            }
        });

        cancelDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                alertDialog.hide();
            }
        });

    }

//this method will display a custom Delete Category Alert Dialog box.
    public void DeleteCategory(final int i)
    {
        alertDialogDelete.show();
        Button noBtn = (Button) alertDialogDelete.findViewById(R.id.noBtn);
        noBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                alertDialogDelete.hide();
            }
        });
        Button yesBtn = (Button) alertDialogDelete.findViewById(R.id.yesBtn);
        yesBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String tempString = categoryNameArrayList.get(i);
                //Log.d("VALUE OF STRING= ", tempString);
                categoryNameArrayList.remove(i);
                for (Category category : cats) {
                    String name = category.getName();
                    if (name.equals(tempString)) {
                        category.delete();
                    }
                }

                adapter.notifyDataSetChanged();
                alertDialogDelete.hide();
            }
        });


    }

    //Filles the Array
    public void getCategoryNames()
    {
        for(Category category : cats)
        {
            String name = category.getName();

            categoryNameArrayList.add(name);
        }

    }


}
package com.example.mikesgamerig.finalproject;
导入android.app.AlertDialog;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入java.util.ArrayList;
导入java.util.List;
公共类CategoryFragment扩展了片段{
私有ArrayList类别ArrayList;
专用阵列适配器;
私人AlertDialog AlertDialog;
私有AlertDialog alertDialogDelete;
私人编辑文本类别编辑文本;
私有字符串getCategoryName;
私人名单猫;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
//创建视图
视图根视图=充气机。充气(R.layout.fragment\u类别,容器,false);
//初始化所有变量和小部件
充气机=GetLayoutFlater(savedInstanceState);
alertDialog=新建alertDialog.Builder(getActivity()).create();
alertDialog.setView(充气器.充气(R.layout.dialog_add_category,null));
alertDialogDelete=新建AlertDialog.Builder(getActivity()).create();
alertDialogDelete.setView(充气机.充气(R.layout.dialog_delete_category,null));
Button buttonAddCategory=(按钮)rootView.findViewById(R.id.addCategoryButton);
ListView categoryListView=(ListView)rootView.findViewById(R.id.list);
//用于存储类别名称的数组列表
categoryNameArrayList=新ArrayList();
//类别对象列表
cats=Category.listAll(Category.class);
getCategoryNames();
//遍历CategoryList并附加到ArrayList
//创建适配器并用类别的所有名称填充listView
adapter=new ArrayAdapter(getActivity(),R.layout.rowlayout,R.id.label,categoryNameArrayList);
setAdapter(适配器);
//为“添加类别”按钮设置OnClick侦听器。
//这将调用另一个将打开自定义对话框的方法
buttonAddCategory.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
DisplayAddCategoryDialogBox();
}
});
//为ListView设置一个长单击侦听器。
//首先必须将LongClickable设置为true。
//OnItemLongClick侦听器将调用一个方法打开一个自定义对话框来删除类别。
categoryListView.setLongClickable(true);
categoryListView.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView AdapterView,视图视图,int i,long l){
第(一)类;
返回true;
}
});
//打开一个新片段,其中包含特定类别的配方列表。
categoryListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
String name=categoryNameArrayList.get(i);
RecipeFragment片段=新RecipeFragment();
fragment.SetTitleName(名称);
getFragmentManager().beginTransaction()
.setCustomAnimations(R.anim.slide\u in\u right,R.anim.slide\u out\u left,R.anim.slide\u in\u left,R.anim.slide\u out\u right)
.替换(R.id.fragmentView,fragment)
.addToBackStack(null).commit();
}
});
返回rootView;
}
//此方法将显示一个自定义添加类别对话框。
public void DisplayAddCategoryDialogBox(){
//显示对话框以输入新类别名称。
alertDialog.show();
categoryEditText=(EditText)alertDialog.findViewById(R.id.categoryEditText);
按钮saveCategoryDialogBtn=(按钮)alertDialog.findViewById(R.id.saveBtn);
按钮cancelDialogButton=(按钮)alertDialog.findViewById(R.id.cancelBtn);
saveCategoryDialogBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
getCategoryName=categoryEditText.getText().toString();
//Log.d(“字符串值:”,getCategoryName);
类别测试=新类别(getCategoryName);
test.save();
分类亚目
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.os.Build;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Toast;

import java.util.zip.Inflater;


public class MainActivity extends ActionBarActivity {

    //public CategoryFragment categoryFragment;
    //public RecipeFragment recipeFragment;



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

        if(savedInstanceState == null)
        {
           CategoryFragment categoryFragment = new CategoryFragment();
           getSupportFragmentManager().beginTransaction()
                   .add(R.id.fragmentView, categoryFragment, "categoryFrag")
                   .commit();
        }


    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate( R.menu.menu_main, menu);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        switch(item.getItemId())
        {
            case R.id.menu_green:

        }

        return super.onOptionsItemSelected(item);
    }


}
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.SeekBar;

public class SeekColorActivity extends Activity {

private int seekR, seekG, seekB;
SeekBar redSeekBar, greenSeekBar, blueSeekBar;
LinearLayout mScreen;

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

    mScreen = (LinearLayout) findViewById(R.id.myScreen);
    redSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_R);
    greenSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_G);
    blueSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_B);
    updateBackground();

    redSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);
    greenSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);
    blueSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);

}

private SeekBar.OnSeekBarChangeListener seekBarChangeListener
= new SeekBar.OnSeekBarChangeListener()
{

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
  boolean fromUser) {
// TODO Auto-generated method stub
 updateBackground();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
};

private void updateBackground()
{
 seekR = redSeekBar.getProgress();
 seekG = greenSeekBar.getProgress();
 seekB = blueSeekBar.getProgress();
 mScreen.setBackgroundColor(
  0xff000000
  + seekR * 0x10000
  + seekG * 0x100
  + seekB
  );
}
}
package com.example.mikesgamerig.finalproject;

import android.app.AlertDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class CategoryFragment extends Fragment {

    private ArrayList<String> categoryNameArrayList;
    private ArrayAdapter<String> adapter;
    private AlertDialog alertDialog;
    private AlertDialog alertDialogDelete;
    private EditText categoryEditText;
    private String getCategoryName;
    private List<Category> cats;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        //create view
        View rootView = inflater.inflate(R.layout.fragment_category, container, false);

        //initialize all variables and widgets
        inflater = getLayoutInflater(savedInstanceState);
        alertDialog = new AlertDialog.Builder(getActivity()).create();
        alertDialog.setView(inflater.inflate(R.layout.dialog_add_category, null));
        alertDialogDelete = new AlertDialog.Builder(getActivity()).create();
        alertDialogDelete.setView(inflater.inflate(R.layout.dialog_delete_category, null));
        Button buttonAddCategory = (Button) rootView.findViewById(R.id.addCategoryButton);
        ListView categoryListView = (ListView) rootView.findViewById(R.id.list);

        //Array list to store names of categories
        categoryNameArrayList = new ArrayList<String>();

        //List of Category Objects
        cats = Category.listAll(Category.class);

        getCategoryNames();
        //iterate through the CategoryList and attach to the ArrayList


        //create adapter and fill the listView with all the name of categories
        adapter = new ArrayAdapter<String>(getActivity(), R.layout.rowlayout, R.id.label, categoryNameArrayList);
        categoryListView.setAdapter(adapter);

        //set OnClick listener for the add category Button.
        // This calls another method that will open a custom dialog box
        buttonAddCategory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DisplayAddCategoryDialogBox();
            }
        });

        //set an onItemLongClick listener for the ListView.
        //First have to setLongClickable to true.
        //the OnItemLongClick listener will call a method to open a custom Dialog to delete a category.
        categoryListView.setLongClickable(true);
        categoryListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                DeleteCategory(i);
                return true;
            }
        });

        //opens up a new fragment with a list of recipes for the specific category.
        categoryListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


                String name = categoryNameArrayList.get(i);
                RecipeFragment fragment = new RecipeFragment();
                fragment.SetTitleName(name);
                getFragmentManager().beginTransaction()
                        .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
                        .replace(R.id.fragmentView, fragment)
                        .addToBackStack(null).commit();


            }
        });
        return rootView;

    }

//This method will Display a custom add category Dialog Box.
    public void DisplayAddCategoryDialogBox(){

        //Show the Dialog box to enter a new category name.
        alertDialog.show();
        categoryEditText = (EditText) alertDialog.findViewById(R.id.categoryEditText);
        Button saveCategoryDialogBtn = (Button) alertDialog.findViewById(R.id.saveBtn);
        Button cancelDialogButton = (Button) alertDialog.findViewById(R.id.cancelBtn);
        saveCategoryDialogBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getCategoryName = categoryEditText.getText().toString();
                //Log.d("STRING VALUE:", getCategoryName);
                Category test = new Category(getCategoryName);
                test.save();
                categoryNameArrayList.add(test.getName());
                //Log.d("added Value: ", test.getName());
                adapter.notifyDataSetChanged();
                alertDialog.hide();
            }
        });

        cancelDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                alertDialog.hide();
            }
        });

    }

//this method will display a custom Delete Category Alert Dialog box.
    public void DeleteCategory(final int i)
    {
        alertDialogDelete.show();
        Button noBtn = (Button) alertDialogDelete.findViewById(R.id.noBtn);
        noBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                alertDialogDelete.hide();
            }
        });
        Button yesBtn = (Button) alertDialogDelete.findViewById(R.id.yesBtn);
        yesBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String tempString = categoryNameArrayList.get(i);
                //Log.d("VALUE OF STRING= ", tempString);
                categoryNameArrayList.remove(i);
                for (Category category : cats) {
                    String name = category.getName();
                    if (name.equals(tempString)) {
                        category.delete();
                    }
                }

                adapter.notifyDataSetChanged();
                alertDialogDelete.hide();
            }
        });


    }

    //Filles the Array
    public void getCategoryNames()
    {
        for(Category category : cats)
        {
            String name = category.getName();

            categoryNameArrayList.add(name);
        }

    }


}