有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java连接到Android Spinner时出错

我正在开发一个Android应用程序,我有一个微调器,根据我选择的项目,该应用程序将读取1号或2号文本文件,等等。。。我已经写了一段代码,但当我在我的设备上运行它时,它会说“应用程序意外停止”

这是我的密码:

public class MainActivity extends Activity implements OnClickListener, OnItemSelectedListener {
Spinner spinner;
String textSource = "";
TextView textMsg;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
textMsg = (TextView) findViewById(R.id.textmsg);
spinner=(Spinner) findViewById(R.id.spinner1);
    List<String> list = new ArrayList<String>();
    list.add("list 1");
    list.add("list 2");
    list.add("list 3");
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, 安卓.R.layout.simple_spinner_item,list);
    adapter.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(this);
URL textUrl;
    String stringText = "";
    try {
        textUrl = new URL(textSource);
        BufferedReader bufferReader = new BufferedReader(
                new InputStreamReader(textUrl.openStream(), "ISO-8859-1"));
        //ISO-8859-1
        String StringBuffer;
        //String stringText = "";
        while ((StringBuffer = bufferReader.readLine()) != null) {
            stringText += StringBuffer;

        }

        bufferReader.close();




        textMsg.setText(stringText);
        //textMsg.setText(string123);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        textMsg.setText(e.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        textMsg.setText(e.toString());
    }
}

@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int pos,
        long arg3) {
    // TODO Auto-generated method stub
    String Text = parent.getSelectedItem().toString();
    if(Text.equals("list 1")) {

        textSource = "path/to/textfile 1";

    }       
    else if(Text.equals("list 2")){
        textSource = "path/to/textfile 2";

   }    
   else {

   }

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

}

我应该如何解决这个问题

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    因为您正在调用textUrl=newurl(textSource)oncreate()方法内的textSource将始终为“”。最好创建一个方法,并根据所选的文本传递新的textSource值

    供您参考的示例:默认情况下,将传递Link1

    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int pos,
            long arg3) {
        String Text = parent.getSelectedItem().toString();
        if (Text.equals("list 1")) {
            Method("path/to/textfile 1");
    
        } else if (Text.equals("list 2")) {
            Method("path/to/textfile 2");
    
        } else {
    
        }
        // TODO Auto-generated method stub
    }
    

    方法:

    public void Method(String textSource) {
    
        URL textUrl;
        String stringText = "";
        try {
            textUrl = new URL(textSource);
            BufferedReader bufferReader = new BufferedReader(
                    new InputStreamReader(textUrl.openStream(), "ISO-8859-1"));
            // ISO-8859-1
            String StringBuffer;
            // String stringText = "";
            while ((StringBuffer = bufferReader.readLine()) != null) {
                stringText += StringBuffer;
    
            }
    
            bufferReader.close();
    
            textMsg.setText(stringText);
            // textMsg.setText(string123);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            textMsg.setText(e.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            textMsg.setText(e.toString());
        }
    }
    
  2. # 2 楼答案

    我建议你使用

    String Text = spinner.getSelectedItem().toString();
    

    而不是

    String Text = parent.getSelectedItem().toString();
    

    使其成为

     @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int pos,
            long arg3) {
    
        String Text = spinner.getSelectedItem().toString();
    
        if(Text.equals("list 1")) {    
            textSource = "path/to/textfile 1";    
        }       
        else if(Text.equals("list 2")){
            textSource = "path/to/textfile 2";    
        }    
        else {    
        }  
    
        // then put your URL code here as follows
        URL textUrl;
        String stringText = "";
        try {
            textUrl = new URL(textSource);
            BufferedReader bufferReader = new BufferedReader(
                    new InputStreamReader(textUrl.openStream(), "ISO-8859-1"));
            //ISO-8859-1
            String StringBuffer;            
    
            while ((StringBuffer = bufferReader.readLine()) != null) {
                stringText += StringBuffer;    
            }
    
            bufferReader.close();  
            textMsg.setText(stringText);
            //textMsg.setText(string123);
        } catch (MalformedURLException e) {            
            e.printStackTrace();
            textMsg.setText(e.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            textMsg.setText(e.toString());
        }   
    
     }