int countervalue = i.getIntExtra(“Count”,0);使应用程序崩溃

时间:2017-07-21 20:28:55

标签: android crash

    int countervalue = i.getIntExtra("Count", 10);

当有人点击他们进入该活动的按钮时,我会在不同的活动中使用这行代码。如果没有这行代码,应用程序就能完美运行。

以下是活动的完整代码:

  package com.example.navjeevenmann.mytycoon;

  import android.content.Intent;
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.ListView;

public class SecondActivity extends AppCompatActivity {
private ListView listView;
Intent i = getIntent();
int userchoice;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    int countervalue = i.getIntExtra("Count", 0);
    String[] values = {"Apple($20)-                Generates $40/sec", 
    "Second", "Third"};
    listView = (ListView) findViewById(R.id.List);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, android.R.id.text1, values);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


        }

    });


}
}

3 个答案:

答案 0 :(得分:1)

i = getIntent();方法

中初始化onCreate()

int countervalue = i.getIntExtra("Count", 0);之前

答案 1 :(得分:0)

您可以使用

等捆绑包

第一项活动

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("int",20);
startActivity(intent);

现在在第二个活动中使用此

Bundle i = getIntent().getExtras();
int value = i.getInt("int");

答案 2 :(得分:0)

维亚切斯拉夫的回答是正确的,但这里有更多的信息。

当你写:

public class SecondActivity extends AppCompatActivity {
    Intent i = getIntent();
}

创建Intent i实例后,您的SecondActivity将会初始化,并且会将其设置为getIntent()方法的结果。

如果您查看此方法的来源,您会看到:

public Intent getIntent() {
    return mIntent;
}

在创建SecondActivity实例时,mIntent为空。所以你的活动表现得就像你写的那样:

public class SecondActivity extends AppCompatActivity {
    Intent i = null;
}

正如Vyacheslav所说,解决方案是稍后初始化i变量。 onCreate()内的任何地方(super通话后)都是一个很好的地方,但等到i.getIntExtra("Count", 0)来电之前也会有效。