2012-08-24 3 views
0

친구들! "다시 묻지 않음"경고 대화 상자 팝업을 만들려고합니다. 하지만 내 코드에 문제가있다. 확인 해봐. 그게 뭐가 잘못 됐어? 그것은 작동하지 않는다, 나는 그것을 잘못된 위치에 넣었다고 생각한다. 누군가 나를 도울 수 있습니까?Android "다시 묻지 않음"알림 대화 상자

package com.example.exemplo; 

import java.util.ArrayList; 
import java.util.Arrays; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Color; 
import android.graphics.Typeface; 
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.LayoutInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.Toast; 

public class Listagem extends Activity 
{ 

public static final String PREFS_NAME = "MyPrefsFile1"; 
public CheckBox dontShowAgain; 


    private static class ViewHolder { 
public TextView text; 
public TextView text2; 
public ImageView image; 
} 

EditText edittext; 
ListView listview; 

String[] text; 

String[] text2; 


int[] image = { 
     R.drawable.wolf; 
     R.drawable.cat; 

    }; 

int textlength = 0; 
ArrayList<String> text_sort = new ArrayList<String>(); 
ArrayList<String> text2_sort = new ArrayList<String>(); 
ArrayList<Integer> image_sort = new ArrayList<Integer>(); 

public void onCreate(Bundle savedInstanceState) 
{ 

super.onCreate(savedInstanceState); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.main); 


@Override 
protected void onResume() { 
    AlertDialog.Builder adb = new AlertDialog.Builder(this); 
    LayoutInflater adbInflater = LayoutInflater.from(this); 
    View eulaLayout = adbInflater.inflate(R.layout.checkbox, null); 
    dontShowAgain = (CheckBox) eulaLayout.findViewById(R.id.skip); 
    adb.setView(eulaLayout); 
    adb.setTitle("Attention"); 
    adb.setMessage(Html.fromHtml("How can I see this then?")); 
    adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      String checkBoxResult = "NOT checked"; 
      if (dontShowAgain.isChecked()) 
       checkBoxResult = "checked"; 
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString("skipMessage", checkBoxResult); 
      // Commit the edits! 
      editor.commit(); 
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://misha.beshkin.lv/android-alertdialog-with-checkbox/"))); 
      return; 
     } 
    }); 

    adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      String checkBoxResult = "NOT checked"; 
      if (dontShowAgain.isChecked()) 
       checkBoxResult = "checked"; 
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString("skipMessage", checkBoxResult); 
      // Commit the edits! 
      editor.commit(); 
      return; 
     } 
    }); 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    String skipMessage = settings.getString("skipMessage", "NOT checked"); 
    if (skipMessage != "checked") 
     adb.show(); 

    super.onResume(); 
} 

}

text = getResources().getStringArray(R.array.text); 
text2 = getResources().getStringArray(R.array.text2); 



edittext = (EditText) findViewById(R.id.EditText01); 
listview = (ListView) findViewById(R.id.ListView01); 



listview.setOnItemClickListener(new OnItemClickListener(){ 

public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
long arg3) { 


    if ("Howl".equals(text[position])) { 
     MediaPlayer player = MediaPlayer.create(Listagem.this, R.raw.howl); 
     player.start(); 


     } 


    if ("Meow".equals(text[position])) { 
     MediaPlayer player = MediaPlayer.create(Listagem.this, R.raw.meow); 
     player.start();    
} 

     }); 






listview.setAdapter(new MyCustomAdapter(text, text2, image)); 

edittext.addTextChangedListener(new TextWatcher() 
{ 

public void afterTextChanged(Editable s) 
{ 

} 

public void beforeTextChanged(CharSequence s, int start, 
int count, int after) 
{ 

} 

public void onTextChanged(CharSequence s, int start, 
int before, int count) 
{ 

textlength = edittext.getText().length(); 
text_sort.clear(); 
text2_sort.clear(); 
image_sort.clear(); 

for (int i = 0; i < text.length; i++) 
{ 
if (textlength <= text[i].length()) 
{ 
if (edittext.getText().toString(). 
equalsIgnoreCase((String) text[i].subSequence(0, textlength))) 
{ 
text_sort.add(text[i]); 
text2_sort.add(text2[i]); 
image_sort.add(image[i]); 
} 
} 
} 


listview.setOnItemClickListener(new OnItemClickListener(){ 

public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
long arg3) { 


    if ("Howl".equals(text_sort.get(position))) { 
     MediaPlayer player = MediaPlayer.create(Listagem.this, R.raw.howl); 
     player.start(); 


     } 


    if ("Meow".equals(text_sort.get(position))) { 
     MediaPlayer player = MediaPlayer.create(Listagem.this, R.raw.meow); 
     player.start(); 


     } 

} 

     }); 

listview.setAdapter(new MyCustomAdapter 
(text_sort, text2_sort, image_sort)); 

} 


}); 
} 



class MyCustomAdapter extends BaseAdapter 
{ 

String[] data_text; 
String[] data_text2; 
int[] data_image; 

MyCustomAdapter() 
{ 

} 

MyCustomAdapter(String[] text, String[] text2, int[] image) 
{ 
data_text = text; 
data_text2 = text2; 
data_image = image; 
} 
MyCustomAdapter(ArrayList<String> text, ArrayList<String> text2, ArrayList<Integer> image) 
{ 
data_text = new String[text.size()]; 
data_text2 = new String[text2.size()]; 
data_image = new int[image.size()]; 

for(int i=0;i<text.size();i++) 
{ 
data_text[i] = text.get(i); 
data_text2[i] = text2.get(i); 
data_image[i] = image.get(i); 
} 

} 

public int getCount() 
{ 
return data_text.length; 

} 

public String getItem(int position) 
{ 
return null; 
} 

public long getItemId(int position) 
{ 
return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) 
{ 

ViewHolder holder; 


if (convertView == null) { 
    LayoutInflater mInflater = getLayoutInflater(); 


    convertView = mInflater.inflate(R.layout.listview, null); 
    holder = new ViewHolder(); 
    holder.text = (TextView) convertView.findViewById(R.id.TextView01); 
    holder.text2 = (TextView) convertView.findViewById(R.id.TextView02); 

    TextView textview2 = (TextView) convertView.findViewById(R.id.TextView02); 
    Typeface font1 = Typeface.createFromAsset(getAssets(), "arial.ttf"); 
    textview2.setTypeface(font1, Typeface.NORMAL); 

    holder.image = (ImageView) convertView.findViewById(R.id.ImageView01); 
    convertView.setTag(holder); 
}else { 
    holder = (ViewHolder) convertView.getTag(); 

} 
holder.text.setText(data_text[position]); 
holder.text2.setText(data_text2[position]); 
holder.image.setImageResource(data_image[position]); 






return convertView; 
} 





    } 


    } 

답변

1

당신은 == 사용! = 문자열에 할 수

사용

if(!skipMessage.equals("checked")) 

대신

if(skipMessage != "checked") 
+0

를 사용해야합니다, DialogInterface는 일식은 당신이 가져올해야합니다 :( – user1550421

+0

유형에 해결 될 수 없다고. 패키지를 확인하고 import 문을 추가 – nandeesh

1

==은 값을 쓰지 않는 문자열을 비교합니다. 이 문제는 AlertBuilder, 된 SharedPreferences이다 .equals()

if (!skipMessage.equals("checked")) 
     adb.show();