Android-dialoogvenster voor het zoeken op maat

Ik heb mijn app nodig om een ​​dialoogvenster Zoekbalk te maken. Maar ik kan het niet laten werken. Ik verwijs deze stackoverflowvraag Android, SeekBar in dialoogvenster en hier is mijn code.

Ik maak een menu en op het menu-item wanneer de gebruiker op de knop size_config klikt, moet de zoekbalk worden weergegeven.

 }if(item.getItemId() == R.id.size_config){
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.id.dialog, (ViewGroup)findViewById(R.id.layout));
        AlertDialog.Builder builder = new AlertDialog.Builder(this)
        .setView(layout);
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
        SeekBar sb = (SeekBar)layout.findViewById(R.id.dialog);
        sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
                Log.d("Dialog to change size", "It's working");
            }

            @Override
            public void onStartTrackingTouch(SeekBar arg0) {
               //TODO Auto-generated method stub

            }

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

            }
        });
    }

En dit is het lay-outbestand.

dialog.xml






Hier is de foutcode.

 06-24 02:31:30.369: E/AndroidRuntime(379): FATAL EXCEPTION: main
 06-24 02:31:30.369: E/AndroidRuntime(379): android.content.res.Resources$NotFoundException: Resource ID #0x7f070001 type #0x12 is not valid
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.content.res.Resources.loadXmlResourceParser(Resources.java:1874)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.content.res.Resources.getLayout(Resources.java:731)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at in.isuru.animation.SnowFall.onOptionsItemSelected(SnowFall.java:189)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.app.Activity.onMenuItemSelected(Activity.java:2195)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:137)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:874)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.widget.ListView.performItemClick(ListView.java:3382)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at  android.os.Handler.handleCallback(Handler.java:587)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.os.Handler.dispatchMessage(Handler.java:92)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.os.Looper.loop(Looper.java:123)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at android.app.ActivityThread.main(ActivityThread.java:4627)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at java.lang.reflect.Method.invokeNative(Native Method)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at java.lang.reflect.Method.invoke(Method.java:521)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
 06-24 02:31:30.369: E/AndroidRuntime(379):     at dalvik.system.NativeStart.main(Native Method)
1
Bekijk layout = inflater.inflate (R.id.dialog, (ViewGroup) findViewById (R.id.layout));
toegevoegd de auteur Isuru Madusanka, de bron
welke regel is 189?
toegevoegd de auteur Adel Boutros, de bron

3 antwoord

Hier is hoe je het SeekBar-dialoogvenster kunt toevoegen,

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Set size!");
dialog.setCancelable(true);
//there are a lot of settings, for dialog, check them all out!
dialog.show();

seekbar = (SeekBar) dialog.findViewById(R.id.size_seekbar);
final TextView tv_dialog_size = (TextView) dialog.findViewById(R.id.set_size_help_text);

// and you can call seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
      //implement methods.
}

En dialoogvensterindeling xml is,

 






3
toegevoegd

Deze oproep:

View layout = inflater.inflate(R.id.dialog, (ViewGroup)findViewById(R.id.layout));

is fout. Je hebt R.layout.dialog nodig (de lay-out ressource waarmee je de weergave wilt opblazen)

View layout = inflater.inflate(R.layout.dialog, null);
0
toegevoegd
In die code zie ik nog steeds de fout View layout = inflater.inflate (R.id.dialog, null); U moet de weergave opblazen met het lay-outbestand. Wat je nu aan het doen bent, is een weergave opblazen met de id van het dialoogvenster, en dat klopt niet.
toegevoegd de auteur Ixx, de bron
Nee, ik krijg nog steeds de foutmelding. pastie.textmate.org/4139774 Hier is de volledige code. Er zijn een aantal meningen en ik denk dat het daardoor crasht.
toegevoegd de auteur Isuru Madusanka, de bron

Vond het antwoord ... Voor die zoekbalken die een aangepast dialoogvenster hebben, moeten ze geïnitialiseerd worden als-

SeekBar seekBar = (SeekBar)dialog.findViewById(R.id.valueBar);
0
toegevoegd