通过在Intent
中编写代码,我可以使Activity
来打开其他MainActivity.java
。
然后,我尝试使用一个类制作一个Intent
,并在MainActivity.java
中对其进行调用。但是变成错误。
如何解决这个问题?
当我在startActivity(numberIntent);
中写MainActivity.java
时没有错误,但是当我将这一行代码移到NumbersClickListener.java
时
出现错误:
- 错误:找不到符号方法
startActivity(Intent)
- 错误:不是封闭的类:
MainActivity
这是我的代码 在MainActivity.java
package com.example.android.*****;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.TextViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NumbersClickListener clickListener = new NumbersClickListener();
TextView numbers = (TextView)findViewById(R.id.numbers);
numbers.setOnClickListener(clickListener);
}
在NumbersClickListener.java
中package com.example.android.*****;
import android.content.Intent;
import android.view.View;
android.widget.Toast first
import android.widget.Toast;
OnClickListener should be written in capital letter
public class NumbersClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {//.makeText(view.getContext(),
"open the list of numbers", Toast.LENGTH_SHORT).show();
Intent numberIntent = new Intent(MainActivity.this,
NumbersActivity.class);
startActivity(numberIntent);
}
}
答案 0 :(得分:1)
错误:在侦听器类中找不到符号方法startActivity(Intent)”?
因为startActivity(Intent)
是一种活动方法,它是从上下文进行的必需调用
如果您想在户外活动中致电startActivity(Intent)
,则需要使用
Context.startActivity(numberIntent);
使用此
view.getContext().startActivity(numberIntent);
代替此
startActivity(numberIntent);
示例代码
public class NumbersClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
Intent numberIntent = new Intent(view.getContext(),
NumbersActivity.class);
view.getContext().startActivity(numberIntent);
}
}
答案 1 :(得分:0)
在MainActivity.this中,使用其上下文。
Intent numberIntent = new Intent(context, NumbersActivity.class);
startActivity(numberIntent);
注意我所做的更改
MainActivity.java
package com.example.android.*****;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.TextViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NumbersClickListener clickListener = new NumbersClickListener(MainActivity.this); // Context while creating ClickListener Object
TextView numbers = (TextView)findViewById(R.id.numbers);
numbers.setOnClickListener(clickListener);
}
NumbersClickListener.java
package com.example.android.*****;
import android.content.Intent;
import android.view.View;
import android.widget.Toast;
public class NumbersClickListener implements View.OnClickListener {
Context context;
NumbersClickListener(Context c){
this.context = c;
}
@Override
public void onClick(View view) {
Intent numberIntent = new Intent(context, NumbersActivity.class);
startActivity(numberIntent);
}
}
答案 2 :(得分:0)
您正在另一个Java文件中定义NumbersClickListener。编译器无法知道,当您调用startActivity时,是指Activity.startActivity
除非您对NumbersClickListener.java有更深的用途,否则只需对View.Listener进行内联声明即可
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NumbersClickListener clickListener = new NumbersClickListener();
TextView numbers = (TextView)findViewById(R.id.numbers);
numbers.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Intent numberIntent = new Intent(MainActivity.this,NumbersActivity.class);
startActivity(numberIntent);
}
});
}
答案 3 :(得分:0)
要启动Activity,您需要上下文。
就像这样pip install jupyter -U
在MainActivity中,由于Activity在内部扩展了Context,所以它不会出错。
NumbersClickListener不是扩展上下文。
因此,您可以使用View上下文开始活动
用
代替context.startActivity()
startActivity(numberIntent)
答案 4 :(得分:0)
在NumberClickListener类中,您可以执行以下操作
Context context = view.getContext();
Intent numberIntent = new Intent (context, NumberActivity.class);
context.startActivity(numberIntent);
通过使用此代码,您可以将NumberClickListener与其他任何活动一起使用。 快乐的编码:)