Java 通过2个片段之间的接口传递ArrayList

Java 通过2个片段之间的接口传递ArrayList,java,android,android-fragments,arraylist,interface,Java,Android,Android Fragments,Arraylist,Interface,嘿,我尝试在一个活动中通过接口方法在两个片段之间传递数组列表。 日志显示没有错误,但是我在一个片段中添加的ArrayList项在另一个片段中的微调器中未显示。 我会发布我的全部代码,所以如果你看到我的问题,如果你能给我解释一下解决方案就好了。提前谢谢 MainActivity.java package de.kwietzorek.fulcrumwebview; import android.app.Activity; import android.support.v4.app.Fragme

嘿,我尝试在一个活动中通过
接口
方法在两个
片段之间传递
数组列表
。 日志显示没有错误,但是我在一个
片段中添加的
ArrayList
项在另一个
片段中的
微调器中未显示。
我会发布我的全部代码,所以如果你看到我的问题,如果你能给我解释一下解决方案就好了。提前谢谢

MainActivity.java

 package de.kwietzorek.fulcrumwebview;


import android.app.Activity;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements Callback {

    static WebView myWebView;
    Fragment AddServerFragment, WebViewFragment;
    ArrayList<String> server_name_list;

    @Override
    public ArrayList<String> getArrayListFromActivity() {

        WebViewFragment frag = (WebViewFragment) getSupportFragmentManager().findFragmentByTag("AddServerFragment");
        if (frag != null) {
            server_name_list = frag.getArrayListFromActivity();
        }
        return server_name_list;
    }

    /* Menu */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.webview:
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.container, new WebViewFragment() {

                        })
                        .commit();
                return true;
            case R.id.add_server:
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.container, new AddServerFragment() {

                        })
                        .commit();
                return true;
            case R.id.menu_refresh:
                myWebView.reload();
                return true;
            default:
                return true;
        }
    }

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

        if (findViewById(R.id.container) != null) {
            if (savedInstanceState != null) {
                return;
            }
            AddServerFragment = new Fragment();
            WebViewFragment = new Fragment();
        }
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.container, new WebViewFragment() {

                })
                .commit();
    }

    /*WebView Fragment*/
    public class WebViewFragment extends Fragment {

        String selected;
        Spinner spinner;

        public WebViewFragment(){
        }

        private Callback callback;


        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            callback = (Callback) activity;}

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.webview, container, false);

            /* WebView */
            myWebView = (WebView) view.findViewById(R.id.webView);
            myWebView.setWebViewClient(new WebC());
            WebSettings webSettings = myWebView.getSettings();

            /* JavaScript Enable */
            webSettings.setJavaScriptEnabled(true);

            /* Server Name Spinner */

            ArrayList<String> server_name_list = callback.getArrayListFromActivity();

            if (server_name_list != null) {

                spinner = (Spinner) view.findViewById(R.id.server_spinner);
                ;
                ArrayAdapter<String> server_adapter = new ArrayAdapter<String>(this.getActivity(),
                        android.R.layout.simple_spinner_item, server_name_list);

                server_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(server_adapter);

                spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                        selected = parent.getItemAtPosition(pos).toString();

                        myWebView.loadUrl(selected);
                    }

                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });
            }
            return view;
        }

        public ArrayList<String> getArrayListFromActivity() {
            return server_name_list;
        }
    }

    /*Add Server Fragment*/
    public class AddServerFragment extends Fragment
            implements View.OnClickListener {

        @Override
        public void onClick(View view) {
        }

        public AddServerFragment(){
        }

        Button btn_back, btn_add;
        EditText server_ip, server_name;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.add_ip, container, false);

            server_ip = (EditText) view.findViewById(R.id.edit_server_address);
            server_name = (EditText) view.findViewById(R.id.edit_server_name);

            btn_back = (Button) view.findViewById(R.id.btn_back);
            btn_back.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.container, new WebViewFragment() {

                            })
                            .commit();
                }
            });

            btn_add = (Button) view.findViewById(R.id.btn_add);
            btn_add.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    String new_server_ip = null, new_server_name = null;

                    ArrayList<String> server_name_list = new ArrayList<>();
                    ArrayList<String> server_ip_list = new ArrayList<>();

                    new_server_ip = server_ip.getText().toString();
                    server_ip_list.add(new_server_ip);

                    new_server_name = server_name.getText().toString();
                    server_name_list.add(new_server_name);
                }
            });

            return view;
        }
    }

    /* WebView Client */
    public class WebC extends WebViewClient {

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

            super.onReceivedError(view, errorCode, description, failingUrl);

        }
    }
}
 package de.kwietzorek.fulcrumwebview;

import java.util.ArrayList;

public interface Callback {
        ArrayList<String> getArrayListFromActivity();
    }
package de.kwietzorek.fulcrumwebview;
导入android.app.Activity;
导入android.support.v4.app.Fragment;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入java.util.ArrayList;
公共类MainActivity扩展AppCompatActivity实现回调{
静态WebView-myWebView;
片段AddServerFragment,WebViewFragment;
ArrayList服务器名称列表;
@凌驾
公共ArrayList GetArrayList FromActivity(){
WebViewFragment frag=(WebViewFragment)getSupportFragmentManager().findFragmentByTag(“AddServerFragment”);
如果(frag!=null){
服务器名称列表=frag.getArrayListFromActivity();
}
返回服务器名称列表;
}
/*菜单*/
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.webview:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container,新的WebViewFragment(){
})
.commit();
返回true;
案例R.id.add_服务器:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container,新的AddServerFragment(){
})
.commit();
返回true;
案例R.id.菜单\刷新:
myWebView.reload();
返回true;
违约:
返回true;
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(findViewById(R.id.container)!=null){
如果(savedInstanceState!=null){
返回;
}
AddServerFragment=新片段();
WebViewFragment=新片段();
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.container,新的WebViewFragment(){
})
.commit();
}
/*网络视图片段*/
公共类WebViewFragment扩展了片段{
选择字符串;
纺纱机;
公共WebViewFragment(){
}
私有回调;
@凌驾
公共事务主任(活动){
超级转速计(活动);
回调=(回调)活动;}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.webview,container,false);
/*网络视图*/
myWebView=(WebView)view.findviewbyd(R.id.WebView);
setWebViewClient(新的WebC());
WebSettings WebSettings=myWebView.getSettings();
/*JavaScript启用*/
setJavaScriptEnabled(true);
/*服务器名称微调器*/
ArrayList服务器_name_list=callback.getArrayListFromActivity();
if(服务器名称列表!=null){
微调器=(微调器)视图.findViewById(R.id.server\u微调器);
;
ArrayAdapter服务器\u适配器=新的ArrayAdapter(this.getActivity(),
android.R.layout.simple\u微调器\u项目、服务器\u名称\u列表);
server_adapter.setDropDownViewResource(android.R.layout.simple_微调器_下拉项);
spinner.setAdapter(服务器适配器);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共位置(AdapterView父项、视图、整数位置、长id){
selected=parent.getItemAtPosition(pos.toString();
myWebView.loadUrl(选中);
}
未选择公共无效(AdapterView父级){
}
});
}
返回视图;
}
公共ArrayList GetArrayList FromActivity(){
返回服务器名称列表;
}
}
/*添加服务器片段*/
公共类AddServerFragment扩展了片段
实现View.OnClickListener{
@凌驾
公共void onClick(视图){
}
公共AddServerFragment(){
}
按钮btn_后退,btn_添加;
EditText服务器ip,服务器名称;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.add_ip,container,false);
server\u ip=(EditText)view.findViewById(R.id.edit\u server\u地址);
服务器名称=(EditText)视图.findViewById(R.id.edit\s