Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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 如何将参数从一个选项卡传递到另一个选项卡,并使用按钮更改选项卡?_Java_Android - Fatal编程技术网

Java 如何将参数从一个选项卡传递到另一个选项卡,并使用按钮更改选项卡?

Java 如何将参数从一个选项卡传递到另一个选项卡,并使用按钮更改选项卡?,java,android,Java,Android,我解释。我有一个带有2个选项卡的tabhost,一个选项卡有一个带有上下文菜单的ListView。菜单有两个选项。我感兴趣的是编辑。按“编辑”键将转到另一个选项卡,并允许我编辑数据 为此,我的想法是使用Listenerlongclic获取position的值,并将该位置传递给ArrayList以取出对象,并在相应的TextLayout中设置每个对象的getter。我不知道我是否能解释我自己。我留下密码 public class MainActivity extends AppCompat

我解释。我有一个带有2个选项卡的tabhost,一个选项卡有一个带有上下文菜单的ListView。菜单有两个选项。我感兴趣的是编辑。按“编辑”键将转到另一个选项卡,并允许我编辑数据

为此,我的想法是使用Listenerlongclic获取position的值,并将该位置传递给ArrayList以取出对象,并在相应的TextLayout中设置每个对象的getter。我不知道我是否能解释我自己。我留下密码

    public class MainActivity extends AppCompatActivity {
private ArrayList datos = new ArrayList();
private ListView listCuadros;
private AdaptadorCuadros adaptador;
private Context contexto;
private int i=0;
private EditText titulo;
private EditText autor;
private EditText estilo;
private EditText precio;
private EditText fecha;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TabHost tabs = findViewById(android.R.id.tabhost);
    tabs.setup();
    TabHost.TabSpec spec = tabs.newTabSpec("mitab1");
    spec.setContent(R.id.tab1);
    spec.setIndicator("Lista del museo");
    tabs.addTab(spec);
    spec = tabs.newTabSpec("mitab2");
    spec.setContent(R.id.tab2);
    spec.setIndicator("Editor");
    tabs.addTab(spec);
    tabs.setCurrentTab(0);
    contexto = this;
    datos.add(new Cuadros("La Mona Lisa", "Leonardo da Vinci", "Renacentista", "$713.000.000", "1503"));
    datos.add(new Cuadros("El grito", "Munch", "Expresionismo", "$119.900.000", "1893"));
    datos.add(new Cuadros("La persistencia de la memoria", "Dalí ", "Surrealismo", "$400.000.000", "1931"));
    datos.add(new Cuadros("El nacimiento de Venus", "Sandro Botticelli", "Gotico", "Desconocido", "1482"));
    datos.add(new Cuadros("Guernica", "Pablo Picasso", "Cubismo", "€300.000.000", "1937"));
    datos.add(new Cuadros("Los jugadores de cartas", "Paul Cézanne", "Posimpresionismo", "€191.000.000", "1890"));
    adaptador = new AdaptadorCuadros(this, datos);
    titulo = findViewById((R.id.titulo));
    autor = findViewById((R.id.autor));
    estilo = findViewById(R.id.estilo);
    precio = findViewById(R.id.precio);
    fecha = findViewById(R.id.fecha);
    listCuadros = findViewById(R.id.listView1);
    listCuadros.setAdapter(adaptador);
    registerForContextMenu(listCuadros);
    listCuadros.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            i = position;
            return false;
        }
});
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mimenu, menu);
}

public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
        case R.id.mi1:
            editar();
            return true;
        case R.id.mi2:
            borrar();
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}

private void editar() {

}

private void borrar() {
    String mensaje = "Va a borrar uno de los cuadros, esta seguro?";
    AlertDialog.Builder builder = new AlertDialog.Builder(contexto);
    builder.setTitle("Confirmacion");
    builder.setMessage(mensaje);
    builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            Log.i("Dialogos", "Confirmacion Cancelada.");
            dialog.cancel();
        }
    })
    .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            Log.i("Dialogos", "Confirmacion Aceptada.");
             datos.remove(i);
                adaptador.notifyDataSetChanged();
            }

    });
    builder.show();
}
public类MainActivity扩展了AppCompatActivity{
private ArrayList datos=new ArrayList();
私有ListView listCuadros;
私人Adapter Cuadros Adapter;
私人语境;
私有整数i=0;
私人编辑文本titulo;
私人编辑文本自动转发器;
私人编辑;
私人编辑;
私人编辑文本fecha;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabs=findviewbyd(android.R.id.TabHost);
tabs.setup();
TabHost.TabSpec spec=tabs.newTabSpec(“mitab1”);
规格设置内容(R.id.tab1);
规格设置指示器(“博物馆列表”);
tabs.addTab(spec);
规格=制表符NETABSPEC(“mitab2”);
规格设置内容(R.id.tab2);
规范设置指示器(“编辑器”);
tabs.addTab(spec);
tabs.setCurrentTab(0);
contexto=这个;
datos.add(新的Cuadros(“蒙娜丽莎”、“达芬奇”、“Renacentista”、“713.000.000美元”、“1503”);
datos.add(新增Cuadros(“El grito”、“Munch”、“Expresionismo”、“119900.000美元”、“1893”);
datos.add(新的Cuadros(“记忆的持久性”、“达利”、“超现实主义”、“400.000.000美元”、“1931”);
datos.add(新的Cuadros(“维纳斯之家”、“桑德罗·波提切利”、“戈蒂科”、“德斯科诺西多”、“1482”);
datos.add(新的Cuadros(“格尔尼卡”、“巴勃罗·毕加索”、“库比斯莫”、“300.000.000欧元”、“1937”);
datos.add(新的Cuadros(“cartas的jugadores”,“Paul Cézanne”,“PosImpressionismo”,“191.000.000欧元”,“1890”);
Adadador=新AdadadorCuadros(此为datos);
titulo=findViewById((R.id.titulo));
autor=findviewbyd((R.id.autor));
estilo=findViewById(R.id.estilo);
precio=findViewById(R.id.precio);
fecha=findviewbyd(R.id.fecha);
listCuadros=findViewById(R.id.listView1);
listCuadros.setAdapter(Adapter);
registerForContextMenu(listCuadros);
listCuadros.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
i=位置;
返回false;
}
});
}
@凌驾
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息){
super.onCreateContextMenu(menu,v,menuInfo);
MenuInflater充气机=getMenuInflater();
充气机。充气(R.menu.mimenu,menu);
}
公共布尔值onContextItemSelected(MenuItem项){
AdapterView.AdapterContextMenuInfo信息=(AdapterView.AdapterContextMenuInfo)项。getMenuInfo();
开关(item.getItemId()){
案例R.id.mi1:
editar();
返回true;
案例R.id.mi2:
borrar();
返回true;
违约:
返回super.onContextItemSelected(项目);
}
}
私有void editar(){
}
私有无效borrar(){
String mensaje=“是否有一个borrar在那里;
AlertDialog.Builder=新建AlertDialog.Builder(contexto);
建造商名称(“确认”);
builder.setMessage(mensaje);
setNegativeButton(“Cancelar”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
Log.i(“Dialogos”,“Confirmacion Cancelada.”);
dialog.cancel();
}
})
.setPositiveButton(“Aceptar”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
Log.i(“Dialogos”,“Confirmation Aceptada.”);
拿督删除(i);
adaptador.notifyDataSetChanged();
}
});
builder.show();
}
a)如果您熟悉
MVVM
,可以通过
ViewModel

b) 您可以在
SharedReferences
中保存和使用数据。如何保存?示例:

创建公共类,将其命名为
saveSharedReference

public class SaveSharedPreference {
   static final String USER_NAME = "user_name";

   static SharedPreferences sharedPreferences;

   static SharedPreferences getSharedPreferences(Context ctx) {
        if (sharedPreferences == null) sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ctx);
        return sharedPreferences;
   }


   public static void setUserName(Context ctx, String user_name) {
        SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
        editor.putString(USER_NAME, user_name);
        editor.apply();
   }

   public static String getUserName(Context context) {
        if (null != getSharedPreferences(context).getString(USER_NAME, ""))
            return getSharedPreferences(context).getString(USER_NAME, "");
        else
            return "";
   }
}
保存并使用在活动(或片段)中传递的数据:

String sValue=“保存值”;
saveSharedReference.setUserName(这个,S值);
String tmp=SaveSharedPreference.getUserName(这个);

您也可以将您的问题张贴在上面,或者如果您更喜欢用自己的语言接受帮助,对不起,请复制错误的一面:P@Nicolas就是要有更多的答案,因为android不容易找到答案