我正在尝试按下按钮启动新活动。我在我的申请中的不同地方这样做。用户登录系统时的第一个。 我正在使用以下代码打开新活动:
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
if (etUserName.getText().length() != 0 && etPassword.getText().toString() != "") {
//code to check login is correct or not
Context ctx = v.getContext();
Intent intent = new Intent(ctx, DashboardActivity.class);
ctx.startActivity(intent);
} else {
// tv.setText("Please enter name");
}
}
});
这样可以正常工作并打开DashboardActivity。在这个新的屏幕上,我有三个按钮,点击每个按钮,一个新的活动开始..其中一个按钮的代码如下:
btnMyActivity = (Button) findViewById(R.id.btnMyActivity);
btnFarmerStatus = (Button) findViewById(R.id.btnFarmerStatus);
btnMeetings = (Button) findViewById(R.id.btnMeetings);
btnMyActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
Context ctx = v.getContext();
Intent intent = new Intent(v.getContext(), MyactivityActivity.class);
ctx.startActivity(intent);
}
});
清单xml就像:
<activity android:name=".DashboardActivity" android:screenOrientation="portrait" />
<activity android:name=".MyactivityActivity" android:screenOrientation="portrait" />
<activity android:name=".FarmerstatusActivity" android:screenOrientation="portrait" />
不知何故,代码是相同的,但第二次新活动没有打开。事实上,屏幕上没有任何反应。我的代码有什么问题?
更新 当DashboardActivity打开logcat时显示:
08-05 15:33:04.880 3073-3073 / com.it.allied.ots_dashboard I / Choreographer:跳过55帧!应用程序可能在其主线程上做了太多工作。 08-05 15:33:05.279 3073-3138 / com.it.allied.ots_dashboard E / Surface:getSlotFromBufferLocked:未知缓冲区:0xabda5950
以下是Myactivityactivity类的代码
public class MyactivityActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_myactivity);
}
@Override
protected void onStart() {
super.onStart();
setContentView(R.layout.activity_myactivity);
}
}
答案 0 :(得分:0)
btnMyActivity = (Button) findViewById(R.id.btnMyActivity);
btnFarmerStatus = (Button) findViewById(R.id.btnFarmerStatus);
btnMeetings = (Button) findViewById(R.id.btnMeetings);
btnMyActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
Intent intent = new Intent(context, MyactivityActivity.class);
startActivity(intent);
}
});
我认为这会对你有所帮助。
答案 1 :(得分:0)
第一个解决方案:在您的活动中定义Context context;
,在活动的onCreate()方法中定义context = this;
。
btnMyActivity.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(context, MyactivityActivity.class);
startActivity(intent);
}
});
和
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Check if Name text control is not empty
if (etUserName.getText().length() != 0 && !(etPassword.getText().toString().equals(""))) {
//code to check login is correct or not
Intent intent = new Intent(context, DashboardActivity.class);
startActivity(intent);
} else {
// tv.setText("Please enter name");
}
}
});
第二个解决方案:如果您不想使用context
,只需将context
中的Intent
替换为yourActivity.this
即可。
Intent intent = new Intent(MyactivityActivity.this, DashboardActivity.class);
startActivity(intent);
答案 2 :(得分:0)
我想你检查一下
btnSignIn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (etUserName.getText().length() != 0 && !(etPassword.getText().toString().equals(""))) {
Context ctx = v.getContext();
Intent intent = new Intent(ctx, DashboardActivity.class);
ctx.startActivity(intent);
} else {
// tv.setText("Please enter name");
}
}
});
答案 3 :(得分:0)
我认为这是Android 6.0的问题。我试图更新Android模拟器,它无法正常工作。我正在为Android模拟器问题开始一个新线程。
答案 4 :(得分:0)
我遇到了完全相同的问题。我发现我在xml文件中编写了ListView而不是LinearLayout。始终检查您在 xml 中使用的布局,问题仅存在于此。
答案 5 :(得分:-1)
似乎这里的其他答案并没有帮助你。试试这个:
创建Intent的另一种方法是使用AndroidManifest.xml文件。
<强>步骤:强>
1)打开AndroidManifest.xml
文件并转到:
<activity android:name=".MyactivityActivity"> </activity>
2)现在使用这样的intent-filter标签:
<activity android:name=".MyactivityActivity">
<intent-filter>
</intent-filter>
</activity>
3)更改动作名称,例如:
<action android:name="AnythingOfYourChoice" />
(但没有空间) 编写动作名称的理想方式如下:
<action android:name="packagename.ActivityName" />
4)更改类别名称,例如:
<category android:name="android.intent.category.DEFAULT" />
5)然后使用隐含意图
Intent i = new Intent("packagename.ActivityName");
startActivity(i);
这可以解决您的问题。