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) {
}
});
}
}
答案 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)
来电之前也会有效。