单击TextView

时间:2016-11-14 05:26:27

标签: android android-intent

我想点击textView以便它可以转到第二个类活动

public void click(View v){
        Intent intent;
        switch(v.getId()){
            case R.id.titleExpense:
                intent = new Intent(this,userExpense.class);
                break;
            case R.id.titleIncome:
                intent = new Intent(this,userIncome.class);
                break;

        }
        startActivity(intent);
    }

我遇到的错误是意图startActivity(intent),我不完全确定我在哪里声明它。

布局:(收入相同)

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/titleExpense"
        android:id="@+id/titleExpense"
        android:textSize="20sp"
        android:clickable="true"
        android:onClick="onClick"
        android:layout_below="@+id/txtGroup"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

从清单文件中:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".userExpense" />
        <activity android:name=".userIncome"></activity>
    </application>

7 个答案:

答案 0 :(得分:2)

根据

android:onClick="onClick"

您的方法需要命名为onClick,而不是click

public void onClick(View v){
    Intent intent = null;
    switch(v.getId()){
        case R.id.titleExpense:
            intent = new Intent(this,userExpense.class);
            break;
        case R.id.titleIncome:
            intent = new Intent(this,userIncome.class);
            break;

    }
    if (null!=intent) startActivity(intent);
  }

或者,使用Java代码将setOnClickListener放入textview。

答案 1 :(得分:0)

试试这个,

public void click(View v){
        Intent intent;
        switch(v.getId()){
            case R.id.titleExpense:
                intent = new Intent(this,userExpense.class);
                startActivity(intent);
                break;
            case R.id.titleIncome:
                intent = new Intent(this,userIncome.class);
                startActivity(intent);
                break;
            }   
    }

答案 2 :(得分:0)

当您提到&#39; this&#39; ,它指的是你点击的View的实例,你可以使用getApplicationContext()来引用父Activity并始终使用default with switch case来避免null错误,请尝试下面的代码

        public void click(View v){
                    Intent intent;
                    switch(v.getId()){
                        case R.id.titleExpense:
                            intent = new Intent(getApplicationContext(),userExpense.class);
                            break;
                        case R.id.titleIncome:
                        default :
                            intent = new Intent(getApplicationContext(),userIncome.class);
                            break;

                    }
                    startActivity(intent);
          }

答案 3 :(得分:0)

你应该修改你的xml

例如,

<TextView
    android:id="@+id/tv1"
    android:layout_width=blahblah
    android:layout_height=blahblah
    android:onClick="onClick"
    android:clickable="true" /> 

并在java文件中

tv1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    Intent intent;
    switch(v.getId()){
        case R.id.titleExpense:
            intent = new Intent(this,userExpense.class);
            startActivity(intent);
            break;
        case R.id.titleIncome:
            intent = new Intent(this,userIncome.class);
            startActivity(intent);
            break;
        }   
    }
});

答案 4 :(得分:0)

试试这个。

public void click(View v){
    Intent intent;
    switch(v.getId()){
        case R.id.titleExpense:
            intent = new Intent(MainActivity.this,userExpense.class);
            startActivity(intent);
            break;
        case R.id.titleIncome:
            intent = new Intent(MainActivity.this,userIncome.class);
            startActivity(intent);
            break;
        }   
}

答案 5 :(得分:0)

您是否实现了onclickListener并为oncreate中的视图初始化

样品

public class MyActivity extends ActionBarActivity implements View.OnClickListener {

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

        Button titleExpense= (Button) findViewById(R.id.titleExpense);
        titleExpense.setOnClickListener(this);

        Button titleIncome = (Button) findViewById(R.id.titleIncome);
        titleIncome.setOnClickListener(this);


    }
@Override
public void onClick(View v){
        Intent intent;
        switch(v.getId()){
            case R.id.titleExpense:
                intent = new Intent(this,userExpense.class);
                startActivity(intent);
                break;
            case R.id.titleIncome:
                intent = new Intent(this,userIncome.class);
                startActivity(intent);
                break;
            }   
    }

答案 6 :(得分:0)

试试这就是制作Intent Global;

 Intent intent;
@Override
public void onClick(View v) {

    switch (v.getId()) {
        case R.id.text:
            intent = new Intent(this, Main2Activity.class);
            break;
    }
    startActivity(intent);
}