Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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 尝试在自定义侦听器类中检索textview时接收NullPointerException_Java_Android_Android Activity_Android View_Android Spinner - Fatal编程技术网

Java 尝试在自定义侦听器类中检索textview时接收NullPointerException

Java 尝试在自定义侦听器类中检索textview时接收NullPointerException,java,android,android-activity,android-view,android-spinner,Java,Android,Android Activity,Android View,Android Spinner,我在一个页面上有两个微调器,每个微调器从同一条线路/列车检索站点 当用户从微调器中选择值时,我想“更新”视图中的信息。我已经为它们创建了一个自定义微调器侦听器,但是我似乎无法从嵌入类中访问要更新的textview 下面是我描述的活动的代码。然而,它有很多,因此在最后的两个嵌入式类中可以找到感兴趣的领域:SpinNeraActivityDestination和SpinNeraActivityOrigin 引发错误的确切行是: EstimatedTime = (TextView) findView

我在一个页面上有两个微调器,每个微调器从同一条线路/列车检索站点

当用户从微调器中选择值时,我想“更新”视图中的信息。我已经为它们创建了一个自定义微调器侦听器,但是我似乎无法从嵌入类中访问要更新的textview

下面是我描述的活动的代码。然而,它有很多,因此在最后的两个嵌入式类中可以找到感兴趣的领域:SpinNeraActivityDestination和SpinNeraActivityOrigin

引发错误的确切行是:

EstimatedTime  = (TextView) findViewById(R.id.timeshow);
我试图访问视图中的文本值,并显示微调器中的数值。这就是它抛出的NullPointerException,我假设是因为从类内部看,视图没有膨胀。但我不知道如何避开它

如有任何帮助/建议,将不胜感激

public class ChooseStations extends Activity {

public int GlobalSpinnerOrigin;
public int GlobalSpinnerDestination;
public double GlobalStationTime;

private MetroSleepDb db;
private Cursor stations;

SimpleCursorAdapter adapter3;
SimpleCursorAdapter adapter2;
TextView EstimatedTime;

Button b1;

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

    // Show the Up button in the action bar.
    getActionBar().setDisplayHomeAsUpEnabled(true);


    Intent intent = getIntent();
    String line_id = intent.getStringExtra("line");

    db = new MetroSleepDb(this);
    stations = db.getStations(line_id);

    GlobalStationTime = 1.3;

    Spinner s1 = (Spinner) findViewById(R.id.spinner1);
    s1.setOnItemSelectedListener(new SpinnerActivityOrigin());
    Spinner s2 = (Spinner) findViewById(R.id.spinner2);
    s2.setOnItemSelectedListener(new SpinnerActivityDestination());

    adapter2 = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item,
            stations, 
            new String[] { "station_name"}, 
            new int[] {android.R.id.text1}, 0); 

    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s1.setAdapter(adapter2);

    adapter3 = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item, 
            stations, 
            new String[] { "station_name"}, 
            new int[] {android.R.id.text1}, 0);

    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s2.setAdapter(adapter3);   

    final Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            if (checkSameValues()) {

                showDialog_error();

            } else {

                Intent intent = new Intent(ChooseStations.this, ShowClock.class);
                //intent.putExtra("line", line_value);
                startActivity(intent);

            }
        }
    });

}

public void showDialog_error() {

    AlertDialog.Builder builder = new AlertDialog.Builder(ChooseStations.this);
    builder.setMessage(R.string.dialogue_message)
           .setTitle(R.string.dialog_title)
           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

               public void onClick(DialogInterface dialog, int id) {

               }
           });

    AlertDialog dialog = builder.create();
    dialog.show();
}



public boolean checkSameValues() {

    boolean result = false;

    Spinner s1 = (Spinner) findViewById(R.id.spinner1);
    Spinner s2 = (Spinner) findViewById(R.id.spinner2);

    int v1 = s1.getSelectedItemPosition();
    int v2 = s2.getSelectedItemPosition();

    if(v1 == v2) {
        result =  true;
    }

    return result;
}


public String getItem(int pos) {

    Cursor c = (Cursor) adapter2.getItem(pos);
    String value = c.getString(c.getColumnIndex("line_id"));
    return value;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}





@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}



public class SpinnerActivityOrigin extends Activity implements OnItemSelectedListener {

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

        GlobalSpinnerOrigin = pos;

    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

public class SpinnerActivityDestination extends Activity implements OnItemSelectedListener {

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

        GlobalSpinnerDestination = pos;

        if(GlobalSpinnerOrigin != GlobalSpinnerDestination){

            int NewGlobalCalculation = Math.abs(GlobalSpinnerOrigin - GlobalSpinnerDestination);
            int NewTimeArrival = multiply(NewGlobalCalculation,GlobalStationTime);

            EstimatedTime  = (TextView) findViewById(R.id.timeshow);
            // EstimatedTime.setText(NewTimeArrival);

        }

    }

    public int multiply(int a,double b){
        return (int) (a * b); 
        }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}
公共类选择器扩展活动{
全球羽毛球协会;
公共国际全球最高目标;
公共双全局静止时间;
专用MetroSleepDb;
专用光标站;
SimpleCorsorAdapter适配器3;
SimpleCorsorAdapter适配器2;
TextView估计时间;
按钮b1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u choose\u stations);
//在操作栏中显示“向上”按钮。
getActionBar().setDisplayHomeAsUpEnabled(true);
Intent=getIntent();
字符串行_id=intent.getStringExtra(“行”);
db=新的MetrosReepDB(本);
车站=db.getStations(线路id);
GlobalStationTime=1.3;
微调器s1=(微调器)findViewById(R.id.spinner1);
s1.setOnItemSelectedListener(新的SpinnerActivityOrigin());
Spinner s2=(Spinner)findViewById(R.id.Spinner 2);
s2.setOnItemSelectedListener(新的SpinnerActivityDestination());
adapter2=新的SimpleCorsAdapter(此,
android.R.layout.simple\u微调器\u项,
电台,,
新字符串[]{“station_name”},
新的int[]{android.R.id.text1},0);
adapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
s1.设置适配器(适配器2);
adapter3=新的SimpleCorsAdapter(此,
android.R.layout.simple\u微调器\u项,
电台,,
新字符串[]{“station_name”},
新的int[]{android.R.id.text1},0);
adapter3.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
s2.设置适配器(适配器3);
最终按钮按钮=(按钮)findViewById(R.id.button1);
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
if(检查SameValues()){
showDialog_error();
}否则{
意向意向=新意向(选择sestations.this、ShowClock.class);
//意向。额外(“行”,行_值);
星触觉(意向);
}
}
});
}
public void showDialog_error(){
AlertDialog.Builder=新建AlertDialog.Builder(选择stations.this);
builder.setMessage(R.string.dialogue\u消息)
.setTitle(R.string.dialog_title)
.setPositiveButton(R.string.ok,新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
}
});
AlertDialog=builder.create();
dialog.show();
}
公共布尔checkSameValues(){
布尔结果=假;
微调器s1=(微调器)findViewById(R.id.spinner1);
Spinner s2=(Spinner)findViewById(R.id.Spinner 2);
int v1=s1.getSelectedItemPosition();
int v2=s2.getSelectedItemPosition();
如果(v1==v2){
结果=真;
}
返回结果;
}
公共字符串getItem(int-pos){
游标c=(游标)适配器2.getItem(pos);
字符串值=c.getString(c.getColumnIndex(“行id”);
返回值;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例android.R.id.home:
//此ID表示“主页”或“向上”按钮
//活动中,将显示向上按钮。使用NavUtils允许用户
//在应用程序结构中向上导航一级。对于
//更多详细信息,请参见Android Design上的导航模式:
//
// http://developer.android.com/design/patterns/navigation.html#up-对背
//
NavUtils.navigateUpFromSameTask(本);
返回true;
}
返回super.onOptionsItemSelected(项目);
}
公共类SpinerActivityOrigin扩展活动实现OnItemSelectedListener{
已选择公共位置(AdapterView父项、视图、整数位置、长id){
GlobalSpinnerOrigin=pos;
}
未选择公共无效(AdapterView父级){
//另一个接口回调
}
}
公共类SpinerActivityDestination扩展活动实现OnItemSelectedListener{
已选择公共位置(AdapterView父项、视图、整数位置、长id){
GlobalSpinnerDestination=pos;
if(GlobalSpinnerOrigin!=GlobalSpinnerDestination){
int NewGlobalCalculation=Math.abs(GlobalSpinnerOrigin-GlobalSpinnerDestination);
int NewTimeArrival=multiply(NewGlobalCalculation,GlobalStationTime);
EstimatedTime=(TextView)findViewById(R.id.timeshow);
//EstimatedTime.setText(NewTimeArrival);
}
}
公共整数乘法(整数a,双b){
报税表(内部)(a*b);
}
未选择公共无效(AdapterView父级){
//另一个接口